From d7ffcbfc2eb9cc71cdf57e93721ca22b8c4bb062 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2020 23:19:19 +0000 Subject: [PATCH 01/71] build(deps): bump node-fetch from 2.6.0 to 2.6.1 Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1. - [Release notes](https://github.com/bitinn/node-fetch/releases) - [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0513416e23..83c3b78ce5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6676,9 +6676,9 @@ node-fetch-npm@^2.0.2: safe-buffer "^5.1.1" node-fetch@^2.3.0, node-fetch@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-forge@^0.7.1: version "0.7.6" From 706593382c3c9c4408af7e369bc64a57d66c99d5 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 26 Nov 2020 16:00:47 +0000 Subject: [PATCH 02/71] docs(rdom): add docstrings for remaining component types --- packages/rdom/src/api.ts | 3 +++ packages/rdom/src/dom.ts | 17 ++++++++++++- packages/rdom/src/event.ts | 4 +-- packages/rdom/src/klist.ts | 36 +++++++++++++++++++++++++++ packages/rdom/src/list.ts | 47 ++++++++++++++++++++++++++++++++++++ packages/rdom/src/promise.ts | 17 +++++++++++++ packages/rdom/src/sub.ts | 23 ++++++++++++++++++ packages/rdom/src/wrap.ts | 16 ++++++++++++ 8 files changed, 160 insertions(+), 3 deletions(-) diff --git a/packages/rdom/src/api.ts b/packages/rdom/src/api.ts index 63fb794abf..cd526d5663 100644 --- a/packages/rdom/src/api.ts +++ b/packages/rdom/src/api.ts @@ -91,6 +91,9 @@ export interface CompiledComponent extends IComponent { children?: IComponent[]; } +/** + * Any value which is either an {@link IComponent} or hiccup-style array/tree + */ export type ComponentLike = IComponent | [string, ...(any | null)[]]; export type Callback = Fn0; diff --git a/packages/rdom/src/dom.ts b/packages/rdom/src/dom.ts index 3cb4d71fcf..6eaabc3705 100644 --- a/packages/rdom/src/dom.ts +++ b/packages/rdom/src/dom.ts @@ -170,12 +170,27 @@ export const $moveTo = ( export const $clear = (el: Element) => ((el.innerHTML = ""), el); +/** + * Same as `el.innerText = body`, however if `body` is an + * {@link @thi.ng/api#IDeref} it'll be automatically deref'd. + * + * @param el + * @param body + */ export const $text = (el: HTMLElement, body: any) => { el.innerText = String(deref(body)); }; +/** + * Same as `el.innerHtml = body`, use with caution! If `body` is an + * {@link @thi.ng/api#IDeref} it'll be automatically deref'd. + * + * @param elß + * @param body + */ + export const $html = (el: HTMLElement, body: MaybeDeref) => { - el.innerHTML = deref(body); + el.innerHTML = String(deref(body)); }; /** diff --git a/packages/rdom/src/event.ts b/packages/rdom/src/event.ts index a2d6b22625..f171461417 100644 --- a/packages/rdom/src/event.ts +++ b/packages/rdom/src/event.ts @@ -20,8 +20,8 @@ export const $input = (stream: ISubscriber) => (e: Event) => /** * Similar to {@link $input}, but attempts to first coerce value using - * `parseFloat()`. Uses given `fallback` value (default: 0) if coercion - * failed. + * `parseFloat()`. Uses given `fallback` value (default: 0) if coercion failed + * (i.e. if the event target's `.value` isn't numeric). * * @param stream - * @param fallback - diff --git a/packages/rdom/src/klist.ts b/packages/rdom/src/klist.ts index cd70a20e60..173e41733b 100644 --- a/packages/rdom/src/klist.ts +++ b/packages/rdom/src/klist.ts @@ -11,6 +11,42 @@ interface KListItem { v: IComponent; } +/** + * Similar to {@link $list}, however additionally uses keying to establish list + * item identities and uses them in a more complex diffing algorithm to avoid + * re-initialization of list items if they've been re-ordered or changed + * positions due to removal/insertion of other items in the list. + * + * @remarks + * The given `keyFn` is used to obtain a *unique* key value for each list item + * obtained from the reactive arrays obtained from `src`. + * + * @example + * ```ts + * const items = reactive([{id: "a"}, {id: "b"}, {id: "c"}]); + * + * $klist( + * // data source (rstream subsribable) + * items, + * // outer list element & attribs + * "ul", + * { class: "list red" }, + * // list item component constructor + * (x) => ["li", {}, x.id], + * // key function + * (x) => x.id + * ).mount(document.body); + * + * // update list + * items.next([{id: "b"}, {id: "d"}, {id: "c"}]); + * ``` + * + * @param src + * @param tag + * @param attribs + * @param childCtor + * @param keyFn + */ export const $klist = ( src: ISubscribable, tag: string, diff --git a/packages/rdom/src/list.ts b/packages/rdom/src/list.ts index 11ad8defcc..2868d067aa 100644 --- a/packages/rdom/src/list.ts +++ b/packages/rdom/src/list.ts @@ -5,6 +5,53 @@ import { $compile } from "./compile"; import { Component } from "./component"; import { $sub } from "./sub"; +/** + * Creates a generalized and dynamically updating list component from items of + * the given `src` stream. + * + * @remarks + * Only very basic key-less diffing of list items is performed (using the + * `equiv` equality predicate arg, i.e. `equiv(prev[i], curr[i])`). + * + * Use this list component only for cases when the child item components do not + * involve complex lifecycles (e.g. preloaders, intro animations etc.). Any list + * items changing position will be first unmounted, then remounted. To avoid + * this full lifecycle transition, consider using {@link $klist}, which employs + * a more elaborate diffing mechanism and keying to uniquely identify list items + * (regardless of their position in the array). + * + * @example + * ```ts + * const items = reactive([{id: "a"}, {id: "b"}, {id: "c"}]); + * + * $list( + * // data source (rstream subsribable) + * items, + * // outer list element & attribs + * "ul", + * { class: "list red" }, + * // list item component constructor + * (x) => ["li", {}, x.id], + * // optional equality predicate (default this.ng/equiv) + * (a, b) => a.id === b.id + * ).mount(document.body); + * + * // update list + * items.next([{id: "b"}, {id: "d"}, {id: "c"}]); + * + * // removes component for item A + * // recreates B in new position + * // creates D + * // keeps C + * ``` + * + * + * @param src + * @param tag + * @param attribs + * @param ctor + * @param equiv + */ export const $list = ( src: ISubscribable, tag: string, diff --git a/packages/rdom/src/promise.ts b/packages/rdom/src/promise.ts index a662329839..9807c6335a 100644 --- a/packages/rdom/src/promise.ts +++ b/packages/rdom/src/promise.ts @@ -2,6 +2,23 @@ import type { Fn } from "@thi.ng/api"; import type { ComponentLike, IComponent, NumOrElement } from "./api"; import { Component } from "./component"; +/** + * Simple component wrapper for {@link ComponentLike} promises. When this + * component mounts it will `await` the given promise or if it fails, compile + * the result of the given (optional) `error` handler as component body. + * + * @example + * ```ts + * const prom = Promise.resolve( + * ["div", {}, "Resolved!"] + * ); + * + * $promise(prom).mount(document.body); + * ``` + * + * @param prom + * @param error + */ export const $promise = ( prom: Promise, error?: Fn diff --git a/packages/rdom/src/sub.ts b/packages/rdom/src/sub.ts index f2439d39a8..880344e852 100644 --- a/packages/rdom/src/sub.ts +++ b/packages/rdom/src/sub.ts @@ -7,6 +7,29 @@ import { $attribs } from "./dom"; import { SCHEDULER } from "./scheduler"; import { $wrapText } from "./wrap"; +/** + * Takes an {@link @thi.ng/rstream#ISubscribable} and creates a simple component + * wrapper for its reactively produced values. + * + * @remarks + * If given an {@link IMountWithState} component, new stream values are applied + * via the `.update()` life cycle value. If given a `tag` and `attribs`, a + * corrresponding element wrapper component will be created automatically (using + * {@link $wrapText} and stream values will be applied using {@link $text} (aka + * setting `el.innerText`). + * + * @example + * ```ts + * const src = reactive(42).map((x) => `value: ${x}`); + * + * $sub(src, "div", { class: "red" }).mount(document.body); + * + * src.next(43); + * ``` + * + * @param src + * @param inner + */ export function $sub( src: ISubscribable, inner: IMountWithState diff --git a/packages/rdom/src/wrap.ts b/packages/rdom/src/wrap.ts index 4100f6627d..d625e454a7 100644 --- a/packages/rdom/src/wrap.ts +++ b/packages/rdom/src/wrap.ts @@ -26,6 +26,22 @@ const wrapper = (update: Fn2) => ( }, }); +/** + * Returns a component wrapper for a single DOM element whose TEXT body can be + * later updated/replaced via `.update()`, similarly to setting `.innerText`. + * + * @param tag - element name + * @param attribs - element attribs + * @param body - optional initial body + */ export const $wrapText = wrapper($text); +/** + * Returns a component wrapper for a single DOM element whose HTML body can be + * later updated/replaced via `.update()`, similarly to setting `.innerHTML`. + * + * @param tag - element name + * @param attribs - element attribs + * @param body - optional initial body + */ export const $wrapHtml = wrapper($html); From cd5cf08d6ae0ffb5ff8a89a19918a563fb889cbd Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 26 Nov 2020 16:01:19 +0000 Subject: [PATCH 03/71] feat(rdom): add $subObject() wrapper, add docs --- packages/rdom/src/object.ts | 98 +++++++++++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 5 deletions(-) diff --git a/packages/rdom/src/object.ts b/packages/rdom/src/object.ts index 0916a3501e..35fc84fb2a 100644 --- a/packages/rdom/src/object.ts +++ b/packages/rdom/src/object.ts @@ -1,15 +1,102 @@ import type { Fn, Keys } from "@thi.ng/api"; -import { fromObject, StreamObj, StreamObjOpts } from "@thi.ng/rstream"; -import type { ComponentLike, IComponent, NumOrElement } from "./api"; +import { + fromObject, + ISubscribable, + StreamObj, + StreamObjOpts, +} from "@thi.ng/rstream"; +import type { + ComponentLike, + IComponent, + IMountWithState, + NumOrElement, +} from "./api"; import { Component } from "./component"; +import { $sub } from "./sub"; +/** + * Creates a control component wrapper with an internal stream setup for user + * defined keys in the given object. When this component is mounted, it will + * call `inner` with an object of key-value streams and then {@link $compile}s + * that function's return value as component body. + * + * @remarks + * Uses {@link @thi.ng/rstream#fromObject} for creating the internal key-value + * streams. These can then be used by `inner` to produce reactive child + * elements. The given `src` object is only used to seed those streams with + * initial values. The component wrapper can be updated with new values, using + * the `.update()` life cycle method with a new object. + * + * By default the value streams will only trigger updates if their values have + * changed. See {@link @thi.ng/rstream#StreamObjOpts} for more details and + * options. + * + * Also see {@link $subObject}. + * + * @example + * ```ts + * const obj = $object( + * // source object (for seeding) + * { id: "a", name: "foo", ignore: 23 }, + * // create subscriptions for given keys + * { keys: ["id", "name"] } + * // component factory + * async (obj) => ["div", {}, "id: ", obj.id, " name: ", obj.name] + * ); + * + * obj.mount(document.body); + * + * obj.update({ id: "b", name: "bar" }); + * ``` + * + * @param src + * @param opts - options for `fromObject()` stream setup + * @param inner + */ export const $object = >( src: T, opts: Partial>, inner: Fn["streams"], Promise> -) => new $Object(src, opts, inner); +) => new $Object(src, opts, inner); -export class $Object> extends Component { +/** + * Syntax sugar for a combination of {@link $sub} and {@link $object} to allow + * reactive updates of `$object()` components themselves. + * + * @example + * ```ts + * interface Foo { + * id: string; + * name: string; + * } + * + * const state = reactive({ id: "a", name: "foo" }); + * + * $subObject( + * state, + * { keys: ["id", "name"] }, + * // component factory + * // only executed once, but `obj.id` and `obj.name` are reactive values + * async (obj) => ["div", {}, "id: ", obj.id, " name: ", obj.name] + * ).mount(document.body); + * + * // update + * state.next({ id: "b", name: "bar" }); + * ``` + * + * @param src + * @param opts + * @param inner + */ +export const $subObject = >( + src: ISubscribable, + opts: Partial>, + inner: Fn["streams"], Promise> +) => $sub(src, $object(src.deref() || {}, opts, inner)); + +export class $Object> + extends Component + implements IMountWithState { protected obj: StreamObj; protected inner?: IComponent; @@ -22,7 +109,8 @@ export class $Object> extends Component { this.obj = fromObject(src, opts); } - async mount(parent: Element, index: NumOrElement = -1) { + async mount(parent: Element, index: NumOrElement = -1, state?: T) { + state !== undefined && this.obj.next(state); this.inner = this.$compile(await this.ctor(this.obj.streams)); this.el = await this.inner.mount(parent, index); return this.el!; From 8241cf94eaf7d2c07315b4f6d9b6083969149c25 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 26 Nov 2020 16:02:39 +0000 Subject: [PATCH 04/71] test(rstream): add retry config to workaround CI timing issues --- packages/rstream/test/debounce.ts | 4 +++- packages/rstream/test/from-iterable.ts | 4 +++- packages/rstream/test/from-promise.ts | 4 +++- packages/rstream/test/metastream.ts | 4 +++- packages/rstream/test/pubsub.ts | 4 +++- packages/rstream/test/stream-sync.ts | 8 +++++--- packages/rstream/test/subscription.ts | 4 +++- packages/rstream/test/timeout.ts | 4 +++- 8 files changed, 26 insertions(+), 10 deletions(-) diff --git a/packages/rstream/test/debounce.ts b/packages/rstream/test/debounce.ts index e45bfc3c33..898e9d5971 100644 --- a/packages/rstream/test/debounce.ts +++ b/packages/rstream/test/debounce.ts @@ -2,7 +2,9 @@ import * as assert from "assert"; import { debounce, fromIterable } from "../src/index"; import { TIMEOUT } from "./config"; -describe("debounce", () => { +describe("debounce", function () { + this.retries(3); + it("basic", (done) => { const acc: number[] = []; fromIterable([1, 2, 3], { delay: TIMEOUT }) diff --git a/packages/rstream/test/from-iterable.ts b/packages/rstream/test/from-iterable.ts index 509c511f5b..f9c0cc941f 100644 --- a/packages/rstream/test/from-iterable.ts +++ b/packages/rstream/test/from-iterable.ts @@ -2,7 +2,9 @@ import * as assert from "assert"; import { fromIterable, State, Stream, Subscription } from "../src/index"; import { TIMEOUT } from "./config"; -describe("fromIterable()", () => { +describe("fromIterable()", function () { + this.retries(3); + let src: Stream; let data = [10, 20, 30]; diff --git a/packages/rstream/test/from-promise.ts b/packages/rstream/test/from-promise.ts index d2439f4812..52dcb22791 100644 --- a/packages/rstream/test/from-promise.ts +++ b/packages/rstream/test/from-promise.ts @@ -8,7 +8,9 @@ import { } from "../src/index"; import { TIMEOUT } from "./config"; -describe("fromPromise()", () => { +describe("fromPromise()", function () { + this.retries(3); + it("resolves to sub", (done) => { let src = fromPromise(Promise.resolve(23)); let called = false; diff --git a/packages/rstream/test/metastream.ts b/packages/rstream/test/metastream.ts index fa26097e9d..10a8342251 100644 --- a/packages/rstream/test/metastream.ts +++ b/packages/rstream/test/metastream.ts @@ -2,7 +2,9 @@ import * as assert from "assert"; import { CloseMode, fromIterable, metaStream, State } from "../src/index"; import { TIMEOUT } from "./config"; -describe("MetaStream", () => { +describe("MetaStream", function () { + this.retries(3); + it("basic", (done) => { const src = fromIterable([1, 2, 3], { delay: TIMEOUT }); const meta = metaStream((x) => diff --git a/packages/rstream/test/pubsub.ts b/packages/rstream/test/pubsub.ts index af2e9d9871..bd9e4a1cfe 100644 --- a/packages/rstream/test/pubsub.ts +++ b/packages/rstream/test/pubsub.ts @@ -10,7 +10,9 @@ import { } from "../src/index"; import { TIMEOUT } from "./config"; -describe("PubSub", () => { +describe("PubSub", function () { + this.retries(3); + let pub: PubSub; it("simple", () => { diff --git a/packages/rstream/test/stream-sync.ts b/packages/rstream/test/stream-sync.ts index e9d39cfe8c..10e54210da 100644 --- a/packages/rstream/test/stream-sync.ts +++ b/packages/rstream/test/stream-sync.ts @@ -14,7 +14,9 @@ import { transduce, } from "../src"; -describe("StreamSync", () => { +describe("StreamSync", function () { + this.retries(3); + function adder() { return map((ports: any) => { let sum = 0; @@ -36,8 +38,8 @@ describe("StreamSync", () => { }); const a1 = sync({ src: { - a: a = fromView(db, { path: ["a1", "ins", "a"] }), - b: b = fromView(db, { path: ["a1", "ins", "b"] }), + a: (a = fromView(db, { path: ["a1", "ins", "a"] })), + b: (b = fromView(db, { path: ["a1", "ins", "b"] })), }, xform: adder(), }); diff --git a/packages/rstream/test/subscription.ts b/packages/rstream/test/subscription.ts index ec3f86536c..16c12f09e0 100644 --- a/packages/rstream/test/subscription.ts +++ b/packages/rstream/test/subscription.ts @@ -10,7 +10,9 @@ import { } from "../src/index"; import { TIMEOUT } from "./config"; -describe("Subscription", () => { +describe("Subscription", function () { + this.retries(3); + let src: Stream; beforeEach(() => {}); diff --git a/packages/rstream/test/timeout.ts b/packages/rstream/test/timeout.ts index a3df8b844f..76eeae9e7e 100644 --- a/packages/rstream/test/timeout.ts +++ b/packages/rstream/test/timeout.ts @@ -2,7 +2,9 @@ import * as assert from "assert"; import { timeout } from "../src"; import { TIMEOUT } from "./config"; -describe("Timeout", () => { +describe("Timeout", function () { + this.retries(3); + it("times out", function (done) { this.timeout(TIMEOUT * 2); From edc076f54f424c86ed0d3c80ace0f0d4bbb879cb Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 27 Nov 2020 15:23:04 +0000 Subject: [PATCH 05/71] fix(tools): update issue search url in readme tpls --- tools/src/partials/package.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/src/partials/package.ts b/tools/src/partials/package.ts index c74d454a41..24516f34bd 100644 --- a/tools/src/partials/package.ts +++ b/tools/src/partials/package.ts @@ -65,7 +65,7 @@ export const packageStatus = (pkgName: string, id = "stable") => { "", link( "Search or submit any issues for this package", - `https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5B${name}%5D` + `https://github.com/thi-ng/umbrella/issues?q=%5B${name}%5D+in%3Atitle` ), ].join("\n"); }; From 8498db037216a6ebcd15cb76a141fedc88feecf3 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Wed, 2 Dec 2020 12:07:36 +0000 Subject: [PATCH 06/71] feat(oquery): add array support, add QueryOpts - add QueryFn interface to define overrides for fn returned by defQuery() - if query called w/ source array, use only P/O terms, no subjects (array indices), return array - add `full` and `inspect` QueryOpts to control result format and array value matching behavior - add/update tests --- packages/oquery/src/api.ts | 84 +++++++++- packages/oquery/src/query.ts | 285 ++++++++++++++++++++++++---------- packages/oquery/test/index.ts | 151 ++++++++++++++++-- 3 files changed, 417 insertions(+), 103 deletions(-) diff --git a/packages/oquery/src/api.ts b/packages/oquery/src/api.ts index 6933daafa5..5ef50428d2 100644 --- a/packages/oquery/src/api.ts +++ b/packages/oquery/src/api.ts @@ -10,12 +10,20 @@ export type FTerm = Predicate; export type OTerm = any | null; -export type SPTerm = FTerm | NumOrString | null; +export type SPTerm = Predicate | NumOrString | null; export type SPInputTerm = SPTerm | NumOrString[] | Set; export type QueryObj = IObjectOf; +/** + * All 27 possible query types. + * + * @remarks + * - l => literal + * - n => null / wildcard + * - f => function / predicate + */ export type QueryType = | "lll" | "llf" @@ -57,6 +65,80 @@ export type QueryImpl = Fn6< export type QueryImpls = Record; +/** + * Query function overloads. + */ +export interface QueryFn { + /** + * Takes an object of this structure `{ s1: { p1: o, p2: ... }, s2: { p1: o + * }...}`, matches all entries using provided `s`(ubject), `p`(redicate) and + * `o`(object) terms. Returns new object of matched results (format depends + * on query config given to {@link defQuery}). + * + * @remarks + * If `res` is provided, results will be injected in that object. Otherwise + * a new result object will be created. + */ + ( + obj: QueryObj, + s: SPInputTerm, + p: SPInputTerm, + o: OTerm, + res?: QueryObj + ): QueryObj; + + /** + * Takes a source array of objects with this structure: [{p1: o, p2: ...}, + * ...]`, and matches each using provided `p`(redicate) and `o`bject terms. + * Returns new array of matched results (result object format depends on + * query config given to {@link defQuery}). + * @remarks + * If `res` is provided, results will be appended to that array. Otherwise + * a new result array will be created. + */ + (obj: QueryObj[], p: SPInputTerm, o: OTerm, res?: any[]): QueryObj[]; +} + export interface QueryOpts { + /** + * If true, the full object is included in the solution as soon as any of + * its P(redicate)-O(bject) terms matches. If false, only successfully + * matched property values will be included for each result. + * + * @example + * ```ts + * const DB = { a: { id: 1, name: "alice" }, b: { name: "bob" } }; + * + * defQuery({ full: true })(DB, null, "id", 1) + * // { a: { id: 1, name: "alice" } } + * + * defQuery({ full: false })(DB, null, "id", 1) + * // { a: { id: 1 } } + * ``` + * + * @defaultValue true + */ + full: boolean; + /** + * If true (default), any array values in the target object's O(bject) + * position will be inspected elementwise rather than matched as array value + * themselves. + * + * @example + * ```ts + * const DB = { a: { knows: ["b","c"] }, b: { knows: ["a","c"] }}; + * defQuery({ inspect: true })(DB, null, "knows", "b") + * // { a: { knows: ["b","c"] } } + * + * defQuery({ inspect: false })(DB, null, "knows", (x) => x.includes("b")) + * // { a: { knows: ["b","c"] } } + * ``` + */ + inspect: boolean; + /** + * Equality predicate applied for matching literals in O(bject) position. + * + * @defaultValue thi.ng/equiv#equiv + */ equiv: Predicate2; } diff --git a/packages/oquery/src/query.ts b/packages/oquery/src/query.ts index 76ba7dd7ad..b7e5421a1f 100644 --- a/packages/oquery/src/query.ts +++ b/packages/oquery/src/query.ts @@ -1,18 +1,23 @@ -import { meldDeepObj } from "@thi.ng/associative"; +import type { Predicate } from "@thi.ng/api"; import { isArray, isFunction, isSet } from "@thi.ng/checks"; import { defmulti } from "@thi.ng/defmulti"; import { equiv } from "@thi.ng/equiv"; import type { FTerm, OTerm, + QueryFn, QueryImpl, QueryImpls, QueryObj, QueryOpts, - SPInputTerm, SPTerm, } from "./api"; +/** + * Classifies a single S,P,O term. See {@link QueryType} for explanations. + * + * @param x + */ const classify = (x: any) => (x != null ? (isFunction(x) ? "f" : "l") : "n"); const coerce = (x: any) => @@ -22,11 +27,30 @@ const coerce = (x: any) => ? (y: any) => x.has(y) : x; +const coerceStr = (x: any) => + isArray(x) + ? coerce(x.map((y) => String(y))) + : isSet(x) + ? coerce(new Set([...x].map((y) => String(y)))) + : x == null || isFunction(x) + ? x + : String(x); + const addTriple = (acc: any, s: any, p: any, o: any) => { const sval = acc[s]; sval ? (sval[p] = o) : (acc[s] = { [p]: o }); }; +const match = (o: any, val: any, opts: QueryOpts) => { + if (val != null) { + const pred = >( + (isFunction(o) ? o : ($: any) => opts.equiv(o, $)) + ); + return opts.inspect && isArray(val) ? val.some(pred) : pred(val); + } + return false; +}; + const collect = ( acc: any, s: any, @@ -37,7 +61,7 @@ const collect = ( ) => { if (val != null) { const pred = isFunction(o) ? o : ($: any) => opts.equiv(o, $); - if (isArray(val)) { + if (opts.inspect && isArray(val)) { val = val.filter(pred); val.length && addTriple(acc, s, p, val); } else if (pred(val)) { @@ -46,92 +70,146 @@ const collect = ( } }; -const queryLL: QueryImpl = (res, db, s, p, o, opts) => - collect(res, s, p, o, db[s]?.[p], opts); +const collectFull = (res: QueryObj, s: any, val: any) => (res[s] = val); + +const collectSP = ( + res: QueryObj, + sval: any, + s: SPTerm, + p: SPTerm, + o: any, + opts: QueryOpts +) => { + if (opts.full) { + for (let $p in sval) { + if ((p)($p) && match(o, sval[$p], opts)) { + collectFull(res, s, sval); + return; + } + } + } else { + for (let $p in sval) { + (p)($p) && collect(res, s, $p, o, sval[$p], opts); + } + } +}; + +const collectSO = ( + res: QueryObj, + sval: any, + s: SPTerm, + o: any, + opts: QueryOpts +) => { + if (opts.full) { + for (let p in sval) { + if (match(o, sval[p], opts)) { + collectFull(res, s, sval); + return; + } + } + } else { + for (let p in sval) { + collect(res, s, p, o, sval[p], opts); + } + } +}; + +const queryLL: QueryImpl = (res, db: any, s, p, o, opts) => { + const sval = db[s]; + const val = sval?.[p]; + if (opts.full) { + match(o, val, opts) && collectFull(res, s, sval); + } else { + collect(res, s, p, o, val, opts); + } +}; -const queryLF: QueryImpl = (res, db, s, p, o, opts) => { +const queryLF: QueryImpl = (res, db: any, s, p, o, opts) => { const sval = db[s]; sval != null && collectSP(res, sval, s, p, o, opts); }; -const queryLN: QueryImpl = (res, db, s, _, o, opts) => { +const queryLN: QueryImpl = (res, db: any, s, _, o, opts) => { const sval = db[s]; sval != null && collectSO(res, sval, s, o, opts); }; -const queryFL: QueryImpl = (res, db, s, p, o, opts) => { - for (let $s in db) { - (s)($s) && collect(res, $s, p, o, db[$s]?.[p], opts); +const queryFL: QueryImpl = (res, db: any, s, p, o, opts) => { + if (opts.full) { + for (let $s in db) { + const sval = db[$s]; + (s)($s) && + match(o, sval?.[p], opts) && + collectFull(res, $s, sval); + } + } else { + for (let $s in db) { + (s)($s) && collect(res, $s, p, o, db[$s]?.[p], opts); + } } }; -const queryFF: QueryImpl = (res, db, s, p, o, opts) => { +const queryFF: QueryImpl = (res, db: any, s, p, o, opts) => { for (let $s in db) { (s)($s) && collectSP(res, db[$s], $s, p, o, opts); } }; -const queryFN: QueryImpl = (res, db, s, _, o, opts) => { +const queryFN: QueryImpl = (res, db: any, s, _, o, opts) => { for (let $s in db) { (s)($s) && collectSO(res, db[$s], $s, o, opts); } }; -const queryNL: QueryImpl = (res, db, _, p, o, opts) => { - for (let s in db) { - collect(res, s, p, o, db[s][p], opts); +const queryNL: QueryImpl = (res, db: any, _, p, o, opts) => { + if (opts.full) { + for (let s in db) { + const sval = db[s]; + match(o, sval[p], opts) && collectFull(res, s, sval); + } + } else { + for (let s in db) { + collect(res, s, p, o, db[s][p], opts); + } } }; -const queryNF: QueryImpl = (res, db, _, p, o, opts) => { +const queryNF: QueryImpl = (res, db: any, _, p, o, opts) => { for (let s in db) { collectSP(res, db[s], s, p, o, opts); } }; -const queryNN: QueryImpl = (res, db, _, __, o, opts) => { +const queryNN: QueryImpl = (res, db: any, _, __, o, opts) => { for (let s in db) { collectSO(res, db[s], s, o, opts); } }; -const collectSP = ( - res: QueryObj, - sval: any, - s: SPTerm, - p: SPTerm, - o: any, - opts: QueryOpts -) => { - for (let $p in sval) { - (p)($p) && collect(res, s, $p, o, sval[$p], opts); - } -}; - -const collectSO = ( - res: QueryObj, - sval: any, - s: SPTerm, - o: any, - opts: QueryOpts -) => { - for (let p in sval) { - collect(res, s, p, o, sval[p], opts); - } -}; - -const querySP = (res: QueryObj, sval: any, s: SPTerm, p: SPTerm) => { - for (let q in sval) { - if ((p)(q)) { - const val = sval[q]; - val != null && addTriple(res, s, q, val); +const querySP: QueryImpl = (res, sval: any, s, p, _, opts) => { + if (opts.full) { + for (let q in sval) { + if ((p)(q)) { + collectFull(res, s, sval); + return; + } + } + } else { + for (let q in sval) { + if ((p)(q)) { + const val = sval[q]; + val != null && addTriple(res, s, q, val); + } } } }; -const queryO = (res: QueryObj, db: QueryObj, s: SPTerm, p: SPTerm) => { - const val = db[s]?.[p]; - val != null && addTriple(res, s, p, val); +const queryO: QueryImpl = (res, db: any, s, p, _, opts) => { + const sval = db[s]; + const val = sval?.[p]; + val != null && + (opts.full ? collectFull(res, s, sval) : addTriple(res, s, p, val)); }; const impl = defmulti< @@ -150,78 +228,113 @@ impl.addAll({ lln: queryO, lfl: queryLF, lff: queryLF, - lfn: (res, db, s, p, _) => { + lfn: (res, db: any, s, p, _, opts) => { const sval = db[s]; - sval != null && querySP(res, sval, s, p); + sval != null && querySP(res, sval, s, p, null, opts); }, lnl: queryLN, lnf: queryLN, - lnn: (res, db, s, _, __) => { + lnn: (res, db: any, s) => { const sval = db[s]; - if (sval != null) { - res[s] = meldDeepObj({}, sval); - } + sval != null && collectFull(res, s, sval); }, fll: queryFL, flf: queryFL, - fln: (res, db, s, p, _) => { + fln: (res, db, s, p, _, opts) => { for (let $s in db) { - (s)($s) && queryO(res, db, $s, p); + (s)($s) && queryO(res, db, $s, p, null, opts); } }, ffl: queryFF, fff: queryFF, - ffn: (res, db, s, p, _) => { - for (let $s in db) { - if ((s)($s)) { - const sval = db[$s]; - for (let $p in sval) { - (p)($p) && addTriple(res, $s, $p, sval[$p]); + ffn: (res, db: any, s, p, _, opts) => { + if (opts.full) { + for (let $s in db) { + if ((s)($s)) { + const sval = db[$s]; + for (let $p in sval) { + if ((p)($p)) { + collectFull(res, $s, sval); + break; + } + } + } + } + } else { + for (let $s in db) { + if ((s)($s)) { + const sval = db[$s]; + for (let $p in sval) { + (p)($p) && addTriple(res, $s, $p, sval[$p]); + } } } } }, fnl: queryFN, fnf: queryFN, - fnn: (res, db, s, _, __) => { + fnn: (res, db: any, s) => { for (let $s in db) { if ((s)($s)) { const sval = db[$s]; - if (sval != null) { - res[$s] = meldDeepObj({}, sval); - } + sval != null && collectFull(res, $s, sval); } } }, nll: queryNL, nlf: queryNL, - nln: (res, db, _, p, __) => { - for (let s in db) { - const val = db[s][p]; - val != null && addTriple(res, s, p, val); + nln: (res, db: any, _, p, __, opts) => { + if (opts.full) { + for (let s in db) { + const sval = db[s]; + const val = sval[p]; + val != null && collectFull(res, s, sval); + } + } else { + for (let s in db) { + const val = db[s][p]; + val != null && addTriple(res, s, p, val); + } } }, nfl: queryNF, nff: queryNF, - nfn: (res, db, _, p, __) => { + nfn: (res, db: any, _, p, __, opts) => { for (let s in db) { - querySP(res, db[s], s, p); + querySP(res, db[s], s, p, null, opts); } }, nnl: queryNN, nnf: queryNN, - nnn: (res, db) => meldDeepObj(res, db), + nnn: (res, db) => Object.assign(res, db), }); -export const defQuery = (opts?: Partial) => { - opts = { equiv, ...opts }; - return ( - obj: QueryObj, - s: SPInputTerm, - p: SPInputTerm, - o: OTerm, - res: QueryObj = {} - ) => ( - impl(res, obj, coerce(s), coerce(p), coerce(o), opts), res - ); +export const defQuery = (opts?: Partial): QueryFn => { + opts = { full: true, inspect: false, equiv, ...opts }; + return (src: any, ...args: any[]) => { + if (isArray(src)) { + let [p, o, res] = args; + res = res || []; + p = coerceStr(p); + o = coerce(o); + for (let i = 0, n = src.length; i < n; i++) { + const curr: QueryObj = {}; + impl(curr, { _: src[i] }, null, p, o, opts); + curr._ && res.push(curr._); + } + return res; + } else { + let [s, p, o, res] = args; + res = res || {}; + impl( + res, + src, + coerceStr(s), + coerceStr(p), + coerce(o), + opts + ); + return res; + } + }; }; diff --git a/packages/oquery/test/index.ts b/packages/oquery/test/index.ts index 6255ec8fe8..7781de7ec3 100644 --- a/packages/oquery/test/index.ts +++ b/packages/oquery/test/index.ts @@ -1,3 +1,4 @@ +import { isNumber } from "@thi.ng/checks"; import * as assert from "assert"; import { defQuery, QueryType, SPInputTerm, OTerm } from "../src"; @@ -21,42 +22,60 @@ const DB = { describe("oquery", () => { it("all patterns", () => { + const { alice, bob, charlie } = DB; const tests: Record< QueryType, - [SPInputTerm, SPInputTerm, OTerm, any] + [SPInputTerm, SPInputTerm, OTerm, any, any] > = { - lll: ["alice", "knows", "bob", { alice: { knows: ["bob"] } }], + lll: [ + "alice", + "knows", + "bob", + { alice: { knows: ["bob"] } }, + { alice }, + ], llf: [ "alice", "knows", (o: any) => o == "bob" || o == "charlie", { alice: { knows: ["bob", "charlie"] } }, + { alice }, ], - lln: ["bob", "knows", null, { bob: { knows: ["alice"] } }], + lln: ["bob", "knows", null, { bob: { knows: ["alice"] } }, { bob }], lfl: [ "bob", (p) => p == "knows" || p == "spouse", "alice", { bob: { knows: ["alice"], spouse: "alice" } }, + { bob }, ], lff: [ "charlie", () => true, (o: any) => o !== "alice", { charlie: { knows: ["bob", "dori"] } }, + { charlie }, + ], + lfn: [ + "bob", + (p) => p == "type", + null, + { bob: { type: "person" } }, + { bob }, ], - lfn: ["bob", (p) => p == "type", null, { bob: { type: "person" } }], lnl: [ "bob", null, "alice", { bob: { knows: ["alice"], spouse: "alice" } }, + { bob }, ], lnf: [ "charlie", null, (o: any) => o == "alice", { charlie: { parent: "alice", knows: ["alice"] } }, + { charlie }, ], lnn: [ "charlie", @@ -68,13 +87,21 @@ describe("oquery", () => { knows: ["alice", "bob", "dori"], }, }, + { charlie }, + ], + fll: [ + (s) => s != "alice", + "age", + 32, + { bob: { age: 32 } }, + { bob }, ], - fll: [(s) => s != "alice", "age", 32, { bob: { age: 32 } }], flf: [ (s) => s != "alice", "age", (o: any) => o > 30, { bob: { age: 32 } }, + { bob }, ], fln: [ (s) => s != "alice", @@ -84,18 +111,21 @@ describe("oquery", () => { bob: { knows: ["alice"] }, charlie: { knows: ["alice", "bob", "dori"] }, }, + { bob, charlie }, ], ffl: [ (s) => s != "alice", (p) => p != "knows", "alice", { bob: { spouse: "alice" }, charlie: { parent: "alice" } }, + { bob, charlie }, ], fff: [ (s) => s === "bob" || s === "alice", (p) => p == "spouse" || p == "age", () => true, { alice: { age: 33 }, bob: { age: 32, spouse: "alice" } }, + { alice, bob }, ], ffn: [ (s) => s != "alice", @@ -111,18 +141,21 @@ describe("oquery", () => { parent: "alice", }, }, + { bob, charlie }, ], fnl: [ (s) => s == "alice", null, "charlie", { alice: { knows: ["charlie"] } }, + { alice }, ], fnf: [ (s) => s == "alice", null, (o: any) => o[0] == "d", { alice: { knows: ["dori"] } }, + { alice }, ], fnn: [ (s) => s == "charlie", @@ -134,49 +167,78 @@ describe("oquery", () => { knows: ["alice", "bob", "dori"], }, }, + { charlie }, + ], + nll: [null, "age", 32, { bob: { age: 32 } }, { bob }], + nlf: [ + null, + "age", + (o: any) => o > 32, + { alice: { age: 33 } }, + { alice }, + ], + nln: [ + null, + "age", + null, + { alice: { age: 33 }, bob: { age: 32 } }, + { alice, bob }, ], - nll: [null, "age", 32, { bob: { age: 32 } }], - nlf: [null, "age", (o: any) => o > 32, { alice: { age: 33 } }], - nln: [null, "age", null, { alice: { age: 33 }, bob: { age: 32 } }], nfl: [ null, () => true, "person", { alice: { type: "person" }, bob: { type: "person" } }, + { alice, bob }, ], nff: [ null, () => true, (o: any) => o == "bob", { alice: { knows: ["bob"] }, charlie: { knows: ["bob"] } }, + { alice, charlie }, ], nfn: [ null, (p) => p == "type", null, { alice: { type: "person" }, bob: { type: "person" } }, + { alice, bob }, + ], + nnl: [null, null, 33, { alice: { age: 33 } }, { alice }], + nnf: [ + null, + null, + (o: any) => o < 33, + { bob: { age: 32 } }, + { bob }, ], - nnl: [null, null, 33, { alice: { age: 33 } }], - nnf: [null, null, (o: any) => o < 33, { bob: { age: 32 } }], - nnn: [null, null, null, DB], + nnn: [null, null, null, DB, DB], }; - const query = defQuery(); + const q1 = defQuery({ full: false, inspect: true }); + const q2 = defQuery({ full: true, inspect: true }); for (let id in tests) { const t = tests[id]; if (t) { - const res = query(DB, t[0], t[1], t[2]); + let res = q1(DB, t[0], t[1], t[2]); assert.deepStrictEqual( res, t[3], - `${id}: ${JSON.stringify(res)}` + `${id}(1): ${JSON.stringify(res)}` + ); + res = q2(DB, t[0], t[1], t[2]); + assert.deepStrictEqual( + res, + t[4], + `${id}(2): ${JSON.stringify(res)}` ); } } }); it("coerce terms (array)", () => { - const query = defQuery(); + const query = defQuery({ full: false }); // S assert.deepStrictEqual(query(DB, ["alice", "bob"], "type", null), { alice: { type: "person" }, @@ -202,7 +264,7 @@ describe("oquery", () => { }); it("coerce terms (set)", () => { - const query = defQuery(); + const query = defQuery({ full: false }); // S assert.deepStrictEqual( query(DB, new Set(["alice", "bob"]), "type", null), @@ -243,4 +305,61 @@ describe("oquery", () => { } ); }); + + it("full option", () => { + const query = defQuery({ full: true }); + // S + assert.deepStrictEqual(query(DB, ["alice", "bob"], "type", null), { + alice: DB.alice, + bob: DB.bob, + }); + assert.deepStrictEqual(query(DB, ["alice", "charlie"], "type", null), { + alice: DB.alice, + }); + // P + assert.deepStrictEqual(query(DB, "alice", ["type", "spouse"], null), { + alice: DB.alice, + }); + assert.deepStrictEqual(query(DB, "bob", ["type", "spouse"], null), { + bob: DB.bob, + }); + // O + assert.deepStrictEqual( + query(DB, "alice", ["type", "age"], [33, "person"]), + { + alice: DB.alice, + } + ); + }); + + it("arrays", () => { + const db = [{ id: 1 }, { id: 11, name: "b" }, { name: "c" }]; + const tests: Record< + "ff" | "fl" | "fn" | "lf" | "ll" | "ln" | "nf" | "nl" | "nn", + [SPInputTerm, OTerm, any] + > = { + ff: [(x) => x == "id", (x: any) => x > 10, [{ id: 11 }]], + fl: [(x) => x === "name", "c", [{ name: "c" }]], + fn: [(x) => x == "name", null, [{ name: "b" }, { name: "c" }]], + lf: ["id", (x: any) => x < 10, [{ id: 1 }]], + ll: ["id", 11, [{ id: 11 }]], + ln: ["id", null, [{ id: 1 }, { id: 11 }]], + nf: [null, isNumber, [{ id: 1 }, { id: 11 }]], + nl: [null, 11, [{ id: 11 }]], + nn: [null, null, [...db]], + }; + + const query = defQuery({ full: false }); + for (let id in tests) { + const t = tests[id]; + if (t) { + const res = query(db, t[0], t[1]); + assert.deepStrictEqual( + res, + t[2], + `${id}: ${JSON.stringify(res)}` + ); + } + } + }); }); From 5c804355a00834a110dd21a768174f0e54ba8d45 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 4 Dec 2020 12:12:44 +0000 Subject: [PATCH 07/71] feat(tools): add bibtex tpl partial for citations --- tools/src/partials/package.ts | 21 ++++++++++++++++++++- tools/src/readme.ts | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/tools/src/partials/package.ts b/tools/src/partials/package.ts index 24516f34bd..f71509f3aa 100644 --- a/tools/src/partials/package.ts +++ b/tools/src/partials/package.ts @@ -3,12 +3,14 @@ import { execSync } from "child_process"; import { readdirSync } from "fs"; import { META_FIELD, Package, RE_PKG } from "../api"; import { CONFIG } from "../config"; -import { readJSON } from "../io"; +import { readJSON, readText } from "../io"; import { link } from "./link"; import { list } from "./list"; export const shortName = (name: string) => name.split("/")[1]; +export const packageURL = (name: string) => `https://${name.substr(1)}`; + export const pkgLink = (name: string) => link(name, `${CONFIG.branchURL}/packages/${shortName(name)}`); @@ -102,3 +104,20 @@ yarn add ${pkg.name} // UMD \`\`\``; + +export const packageCitation = (name: string) => { + let hasAuthors = false; + try { + hasAuthors = !!readText("./AUTHORS.md").length; + } catch (_) {} + return `If this project contributes to an academic publication, please cite it as: + +\`\`\`bibtex +@misc{thing-${shortName(name)}, + title = "${name}", + author = "${CONFIG.mainAuthor}${hasAuthors ? " and others" : ""}", + note = "${packageURL(name)}", + year = ${CONFIG.meta.year} +} +\`\`\``; +}; diff --git a/tools/src/readme.ts b/tools/src/readme.ts index fd1988eb09..ee99473328 100644 --- a/tools/src/readme.ts +++ b/tools/src/readme.ts @@ -9,6 +9,7 @@ import { examplesTable } from "./partials/examples"; import { copyright } from "./partials/license"; import { packageBanner, + packageCitation, packageDeps, packageDesc, packageInstallation, @@ -31,6 +32,7 @@ try { "pkg.size": packageSize, "pkg.banner": () => packageBanner(CONFIG.root.name), "pkg.install": () => packageInstallation(CONFIG.root), + "pkg.cite": () => packageCitation(CONFIG.root.name), status: () => packageStatus(CONFIG.root.name, CONFIG.meta.status), examples: () => examplesTable(CONFIG.root.name), supportPackages: () => supportPackages(CONFIG.root.name), From 436f71f7380b63475982e06f13ed9e5bfb1c9608 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 4 Dec 2020 12:15:13 +0000 Subject: [PATCH 08/71] docs: add bibtex field to all readme tpls --- packages/adapt-dpi/tpl.readme.md | 2 ++ packages/adjacency/tpl.readme.md | 2 ++ packages/api/tpl.readme.md | 2 ++ packages/arrays/tpl.readme.md | 2 ++ packages/associative/tpl.readme.md | 2 ++ packages/atom/tpl.readme.md | 2 ++ packages/bench/tpl.readme.md | 2 ++ packages/bencode/tpl.readme.md | 2 ++ packages/binary/tpl.readme.md | 2 ++ packages/bitfield/tpl.readme.md | 2 ++ packages/bitstream/tpl.readme.md | 2 ++ packages/cache/tpl.readme.md | 2 ++ packages/checks/tpl.readme.md | 2 ++ packages/color/tpl.readme.md | 2 ++ packages/colored-noise/tpl.readme.md | 2 ++ packages/compare/tpl.readme.md | 2 ++ packages/compose/tpl.readme.md | 2 ++ packages/csp/tpl.readme.md | 2 ++ packages/csv/tpl.readme.md | 2 ++ packages/date/tpl.readme.md | 2 ++ packages/dcons/tpl.readme.md | 2 ++ packages/defmulti/tpl.readme.md | 2 ++ packages/dgraph-dot/tpl.readme.md | 2 ++ packages/dgraph/tpl.readme.md | 2 ++ packages/diff/tpl.readme.md | 2 ++ packages/dl-asset/tpl.readme.md | 2 ++ packages/dlogic/tpl.readme.md | 2 ++ packages/dot/tpl.readme.md | 2 ++ packages/dsp-io-wav/tpl.readme.md | 2 ++ packages/dsp/tpl.readme.md | 2 ++ packages/dual-algebra/tpl.readme.md | 2 ++ packages/dynvar/tpl.readme.md | 2 ++ packages/ecs/tpl.readme.md | 2 ++ packages/egf/tpl.readme.md | 2 ++ packages/equiv/tpl.readme.md | 2 ++ packages/errors/tpl.readme.md | 2 ++ packages/fsm/tpl.readme.md | 2 ++ packages/geom-accel/tpl.readme.md | 2 ++ packages/geom-api/tpl.readme.md | 2 ++ packages/geom-arc/tpl.readme.md | 2 ++ packages/geom-clip-line/tpl.readme.md | 2 ++ packages/geom-clip-poly/tpl.readme.md | 2 ++ packages/geom-closest-point/tpl.readme.md | 2 ++ packages/geom-fuzz/tpl.readme.md | 2 ++ packages/geom-hull/tpl.readme.md | 2 ++ packages/geom-io-obj/tpl.readme.md | 2 ++ packages/geom-isec/tpl.readme.md | 2 ++ packages/geom-isoline/tpl.readme.md | 2 ++ packages/geom-poly-utils/tpl.readme.md | 2 ++ packages/geom-resample/tpl.readme.md | 2 ++ packages/geom-splines/tpl.readme.md | 2 ++ packages/geom-subdiv-curve/tpl.readme.md | 2 ++ packages/geom-tessellate/tpl.readme.md | 2 ++ packages/geom-voronoi/tpl.readme.md | 2 ++ packages/geom/tpl.readme.md | 2 ++ packages/gp/tpl.readme.md | 2 ++ packages/grid-iterators/tpl.readme.md | 2 ++ packages/hdiff/tpl.readme.md | 2 ++ packages/hdom-canvas/tpl.readme.md | 2 ++ packages/hdom-components/tpl.readme.md | 2 ++ packages/hdom-mock/tpl.readme.md | 2 ++ packages/hdom/tpl.readme.md | 2 ++ packages/heaps/tpl.readme.md | 2 ++ packages/hex/tpl.readme.md | 2 ++ packages/hiccup-canvas/tpl.readme.md | 2 ++ packages/hiccup-carbon-icons/tpl.readme.md | 2 ++ packages/hiccup-css/tpl.readme.md | 2 ++ packages/hiccup-html/tpl.readme.md | 2 ++ packages/hiccup-markdown/tpl.readme.md | 2 ++ packages/hiccup-svg/tpl.readme.md | 2 ++ packages/hiccup/tpl.readme.md | 2 ++ packages/idgen/tpl.readme.md | 2 ++ packages/iges/tpl.readme.md | 2 ++ packages/imgui/tpl.readme.md | 2 ++ packages/interceptors/tpl.readme.md | 2 ++ packages/intervals/tpl.readme.md | 2 ++ packages/iterators/tpl.readme.md | 2 ++ packages/layout/tpl.readme.md | 2 ++ packages/leb128/tpl.readme.md | 2 ++ packages/lsys/tpl.readme.md | 2 ++ packages/malloc/tpl.readme.md | 2 ++ packages/math/tpl.readme.md | 2 ++ packages/matrices/tpl.readme.md | 2 ++ packages/memoize/tpl.readme.md | 2 ++ packages/mime/tpl.readme.md | 2 ++ packages/morton/tpl.readme.md | 2 ++ packages/oquery/tpl.readme.md | 2 ++ packages/parse/tpl.readme.md | 2 ++ packages/paths/tpl.readme.md | 2 ++ packages/pixel/tpl.readme.md | 2 ++ packages/pointfree-lang/tpl.readme.md | 2 ++ packages/pointfree/tpl.readme.md | 2 ++ packages/poisson/tpl.readme.md | 2 ++ packages/porter-duff/tpl.readme.md | 2 ++ packages/prefixes/tpl.readme.md | 2 ++ packages/quad-edge/tpl.readme.md | 2 ++ packages/ramp/tpl.readme.md | 2 ++ packages/random/tpl.readme.md | 2 ++ packages/range-coder/tpl.readme.md | 2 ++ packages/rdom-canvas/tpl.readme.md | 2 ++ packages/rdom-components/tpl.readme.md | 2 ++ packages/rdom/tpl.readme.md | 2 ++ packages/resolve-map/tpl.readme.md | 2 ++ packages/rle-pack/tpl.readme.md | 2 ++ packages/router/tpl.readme.md | 2 ++ packages/rstream-csp/tpl.readme.md | 2 ++ packages/rstream-dot/tpl.readme.md | 2 ++ packages/rstream-gestures/tpl.readme.md | 2 ++ packages/rstream-graph/tpl.readme.md | 2 ++ packages/rstream-log-file/tpl.readme.md | 2 ++ packages/rstream-log/tpl.readme.md | 2 ++ packages/rstream-query/tpl.readme.md | 2 ++ packages/rstream/tpl.readme.md | 2 ++ packages/sax/tpl.readme.md | 2 ++ packages/scenegraph/tpl.readme.md | 2 ++ packages/seq/tpl.readme.md | 2 ++ packages/sexpr/tpl.readme.md | 2 ++ packages/shader-ast-glsl/tpl.readme.md | 2 ++ packages/shader-ast-js/tpl.readme.md | 2 ++ packages/shader-ast-stdlib/tpl.readme.md | 2 ++ packages/shader-ast/tpl.readme.md | 2 ++ packages/simd/tpl.readme.md | 2 ++ packages/soa/tpl.readme.md | 2 ++ packages/sparse/tpl.readme.md | 2 ++ packages/strings/tpl.readme.md | 2 ++ packages/system/tpl.readme.md | 2 ++ packages/text-canvas/tpl.readme.md | 2 ++ packages/transducers-binary/tpl.readme.md | 2 ++ packages/transducers-fsm/tpl.readme.md | 2 ++ packages/transducers-hdom/tpl.readme.md | 2 ++ packages/transducers-patch/tpl.readme.md | 2 ++ packages/transducers-stats/tpl.readme.md | 2 ++ packages/transducers/tpl.readme.md | 2 ++ packages/unionstruct/tpl.readme.md | 2 ++ packages/vclock/tpl.readme.md | 2 ++ packages/vector-pools/tpl.readme.md | 2 ++ packages/vectors/tpl.readme.md | 2 ++ packages/viz/tpl.readme.md | 4 ++++ packages/webgl-msdf/tpl.readme.md | 2 ++ packages/webgl-shadertoy/tpl.readme.md | 2 ++ packages/webgl/tpl.readme.md | 2 ++ packages/zipper/tpl.readme.md | 2 ++ scripts/make-module | 2 ++ 143 files changed, 288 insertions(+) diff --git a/packages/adapt-dpi/tpl.readme.md b/packages/adapt-dpi/tpl.readme.md index 71cf58c0ce..bed66dc24a 100644 --- a/packages/adapt-dpi/tpl.readme.md +++ b/packages/adapt-dpi/tpl.readme.md @@ -55,6 +55,8 @@ adaptDPI(canvas, 640, 480); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/adjacency/tpl.readme.md b/packages/adjacency/tpl.readme.md index 82b7b45100..c1a3304490 100644 --- a/packages/adjacency/tpl.readme.md +++ b/packages/adjacency/tpl.readme.md @@ -43,6 +43,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/api/tpl.readme.md b/packages/api/tpl.readme.md index 68d9e4a103..b21c5cf9ec 100644 --- a/packages/api/tpl.readme.md +++ b/packages/api/tpl.readme.md @@ -66,6 +66,8 @@ The following env variables are used to control the behavior of some functions i ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/arrays/tpl.readme.md b/packages/arrays/tpl.readme.md index 6016a4699d..14384563c6 100644 --- a/packages/arrays/tpl.readme.md +++ b/packages/arrays/tpl.readme.md @@ -84,6 +84,8 @@ bsGT(binarySearch(src, 40), src.length) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/associative/tpl.readme.md b/packages/associative/tpl.readme.md index c564a512e4..3ce1434cf7 100644 --- a/packages/associative/tpl.readme.md +++ b/packages/associative/tpl.readme.md @@ -345,6 +345,8 @@ t.knownPrefix(["to", "be", "not"]); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/atom/tpl.readme.md b/packages/atom/tpl.readme.md index e721eca629..9ad59576be 100644 --- a/packages/atom/tpl.readme.md +++ b/packages/atom/tpl.readme.md @@ -586,6 +586,8 @@ db.canRedo() ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/bench/tpl.readme.md b/packages/bench/tpl.readme.md index 696b3f676f..df2d08a0c3 100644 --- a/packages/bench/tpl.readme.md +++ b/packages/bench/tpl.readme.md @@ -116,6 +116,8 @@ benchmark(() => fib(40), { title: "fib", iter: 10, warmup: 5 }); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/bencode/tpl.readme.md b/packages/bencode/tpl.readme.md index 681196a153..9cd9cea5d7 100644 --- a/packages/bencode/tpl.readme.md +++ b/packages/bencode/tpl.readme.md @@ -91,6 +91,8 @@ decode(bytes, false) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/binary/tpl.readme.md b/packages/binary/tpl.readme.md index 82b7b45100..c1a3304490 100644 --- a/packages/binary/tpl.readme.md +++ b/packages/binary/tpl.readme.md @@ -43,6 +43,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/bitfield/tpl.readme.md b/packages/bitfield/tpl.readme.md index 56c9a58e3a..b5ed53fac4 100644 --- a/packages/bitfield/tpl.readme.md +++ b/packages/bitfield/tpl.readme.md @@ -87,6 +87,8 @@ mat.toString(); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/bitstream/tpl.readme.md b/packages/bitstream/tpl.readme.md index b0024b1d8c..5e45f634d1 100644 --- a/packages/bitstream/tpl.readme.md +++ b/packages/bitstream/tpl.readme.md @@ -137,6 +137,8 @@ faster `readBit()` for reading single bits. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/cache/tpl.readme.md b/packages/cache/tpl.readme.md index 6fe40666cf..30539be13e 100644 --- a/packages/cache/tpl.readme.md +++ b/packages/cache/tpl.readme.md @@ -187,6 +187,8 @@ mru = new cache.MRUCache(); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/checks/tpl.readme.md b/packages/checks/tpl.readme.md index 82b7b45100..c1a3304490 100644 --- a/packages/checks/tpl.readme.md +++ b/packages/checks/tpl.readme.md @@ -43,6 +43,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/color/tpl.readme.md b/packages/color/tpl.readme.md index 7afb2f2b7d..23f4f5aa04 100644 --- a/packages/color/tpl.readme.md +++ b/packages/color/tpl.readme.md @@ -226,6 +226,8 @@ col.transform([], filter, col.RED); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/colored-noise/tpl.readme.md b/packages/colored-noise/tpl.readme.md index 34cd645f9f..e4ef27fe0f 100644 --- a/packages/colored-noise/tpl.readme.md +++ b/packages/colored-noise/tpl.readme.md @@ -401,6 +401,8 @@ writeFileSync( ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/compare/tpl.readme.md b/packages/compare/tpl.readme.md index 27e25b0619..473402c485 100644 --- a/packages/compare/tpl.readme.md +++ b/packages/compare/tpl.readme.md @@ -125,6 +125,8 @@ const src = [ ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/compose/tpl.readme.md b/packages/compose/tpl.readme.md index 87b5856919..f9a7609340 100644 --- a/packages/compose/tpl.readme.md +++ b/packages/compose/tpl.readme.md @@ -49,6 +49,8 @@ ${docLink} ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/csp/tpl.readme.md b/packages/csp/tpl.readme.md index 0b2ebb06f0..0dc1ba3609 100644 --- a/packages/csp/tpl.readme.md +++ b/packages/csp/tpl.readme.md @@ -219,6 +219,8 @@ pub.channel().into(["alice", "bert", "bella", "charlie", "arthur"]); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/csv/tpl.readme.md b/packages/csv/tpl.readme.md index daf3ef1fa9..791812e747 100644 --- a/packages/csv/tpl.readme.md +++ b/packages/csv/tpl.readme.md @@ -98,6 +98,8 @@ import { parseCSV, upper, float } from "@thi.ng/csv"; ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/date/tpl.readme.md b/packages/date/tpl.readme.md index d492eee8dd..523cb4dd74 100644 --- a/packages/date/tpl.readme.md +++ b/packages/date/tpl.readme.md @@ -203,6 +203,8 @@ fmt(dateTime()); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dcons/tpl.readme.md b/packages/dcons/tpl.readme.md index ff58bf1465..0b6923b848 100644 --- a/packages/dcons/tpl.readme.md +++ b/packages/dcons/tpl.readme.md @@ -130,6 +130,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/defmulti/tpl.readme.md b/packages/defmulti/tpl.readme.md index 5f64709bff..2cda8086f5 100644 --- a/packages/defmulti/tpl.readme.md +++ b/packages/defmulti/tpl.readme.md @@ -337,6 +337,8 @@ console.log(toDot(defDGraph(fn.dependencies()), { id: (id) => id })); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dgraph-dot/tpl.readme.md b/packages/dgraph-dot/tpl.readme.md index bad217ee92..8d73031ffa 100644 --- a/packages/dgraph-dot/tpl.readme.md +++ b/packages/dgraph-dot/tpl.readme.md @@ -83,6 +83,8 @@ console.log(toDot(graph, { id: (node) => node })); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dgraph/tpl.readme.md b/packages/dgraph/tpl.readme.md index 410b0cadc9..e1c498ab7e 100644 --- a/packages/dgraph/tpl.readme.md +++ b/packages/dgraph/tpl.readme.md @@ -67,6 +67,8 @@ g.sort(); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/diff/tpl.readme.md b/packages/diff/tpl.readme.md index 44d76b13a5..56f9a0563b 100644 --- a/packages/diff/tpl.readme.md +++ b/packages/diff/tpl.readme.md @@ -68,6 +68,8 @@ The order of optional args to both functions has been swapped to: ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dl-asset/tpl.readme.md b/packages/dl-asset/tpl.readme.md index 09a301396e..0586fba71f 100644 --- a/packages/dl-asset/tpl.readme.md +++ b/packages/dl-asset/tpl.readme.md @@ -73,6 +73,8 @@ download("hello.txt", src, { ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dlogic/tpl.readme.md b/packages/dlogic/tpl.readme.md index 59ab53f1f9..23a30694a6 100644 --- a/packages/dlogic/tpl.readme.md +++ b/packages/dlogic/tpl.readme.md @@ -67,6 +67,8 @@ xor(true, true) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dot/tpl.readme.md b/packages/dot/tpl.readme.md index 7a6171b256..58dd90e726 100644 --- a/packages/dot/tpl.readme.md +++ b/packages/dot/tpl.readme.md @@ -140,6 +140,8 @@ edge[arrowsize="0.75", fontname="Inconsolata", fontsize="9"]; ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dsp-io-wav/tpl.readme.md b/packages/dsp-io-wav/tpl.readme.md index 4b0ad5ce23..11c1708184 100644 --- a/packages/dsp-io-wav/tpl.readme.md +++ b/packages/dsp-io-wav/tpl.readme.md @@ -59,6 +59,8 @@ fs.writeFileSync( ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dsp/tpl.readme.md b/packages/dsp/tpl.readme.md index 6df99a51d2..71ff5729b3 100644 --- a/packages/dsp/tpl.readme.md +++ b/packages/dsp/tpl.readme.md @@ -495,6 +495,8 @@ Desmos](https://www.desmos.com/calculator/lkyf2ag3ta) to experiment. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dual-algebra/tpl.readme.md b/packages/dual-algebra/tpl.readme.md index fa540e52f7..53a718df4f 100644 --- a/packages/dual-algebra/tpl.readme.md +++ b/packages/dual-algebra/tpl.readme.md @@ -183,6 +183,8 @@ f2(2) // [1, 8] ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/dynvar/tpl.readme.md b/packages/dynvar/tpl.readme.md index b7dab5f2d8..e9b7338a91 100644 --- a/packages/dynvar/tpl.readme.md +++ b/packages/dynvar/tpl.readme.md @@ -114,6 +114,8 @@ cat foo.txt ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/ecs/tpl.readme.md b/packages/ecs/tpl.readme.md index 8aa7d57f1f..ac918822c5 100644 --- a/packages/ecs/tpl.readme.md +++ b/packages/ecs/tpl.readme.md @@ -120,6 +120,8 @@ group.forEach((x) => console.log(x)); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/egf/tpl.readme.md b/packages/egf/tpl.readme.md index bdb256d8c9..746a4b135e 100644 --- a/packages/egf/tpl.readme.md +++ b/packages/egf/tpl.readme.md @@ -484,6 +484,8 @@ thi:umbrella ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/equiv/tpl.readme.md b/packages/equiv/tpl.readme.md index 7340e61c58..b3cd5bcd9c 100644 --- a/packages/equiv/tpl.readme.md +++ b/packages/equiv/tpl.readme.md @@ -96,6 +96,8 @@ equiv(new Node([1,2,3], "foo"), new Node([1,2,3], "bar")); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/errors/tpl.readme.md b/packages/errors/tpl.readme.md index ccb1427f45..a47d182dba 100644 --- a/packages/errors/tpl.readme.md +++ b/packages/errors/tpl.readme.md @@ -75,6 +75,8 @@ try { ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/fsm/tpl.readme.md b/packages/fsm/tpl.readme.md index 766f61999a..c398fc0d24 100644 --- a/packages/fsm/tpl.readme.md +++ b/packages/fsm/tpl.readme.md @@ -100,6 +100,8 @@ transforming iterator of the FSM results. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-accel/tpl.readme.md b/packages/geom-accel/tpl.readme.md index c9e4eeca4a..4a28152d03 100644 --- a/packages/geom-accel/tpl.readme.md +++ b/packages/geom-accel/tpl.readme.md @@ -55,6 +55,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-api/tpl.readme.md b/packages/geom-api/tpl.readme.md index 82b7b45100..c1a3304490 100644 --- a/packages/geom-api/tpl.readme.md +++ b/packages/geom-api/tpl.readme.md @@ -43,6 +43,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-arc/tpl.readme.md b/packages/geom-arc/tpl.readme.md index 82b7b45100..c1a3304490 100644 --- a/packages/geom-arc/tpl.readme.md +++ b/packages/geom-arc/tpl.readme.md @@ -43,6 +43,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-clip-line/tpl.readme.md b/packages/geom-clip-line/tpl.readme.md index ae0c600ca4..c769cfb85a 100644 --- a/packages/geom-clip-line/tpl.readme.md +++ b/packages/geom-clip-line/tpl.readme.md @@ -71,6 +71,8 @@ liangBarsky2( ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-clip-poly/tpl.readme.md b/packages/geom-clip-poly/tpl.readme.md index ed11573b6c..179b54209f 100644 --- a/packages/geom-clip-poly/tpl.readme.md +++ b/packages/geom-clip-poly/tpl.readme.md @@ -49,6 +49,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-closest-point/tpl.readme.md b/packages/geom-closest-point/tpl.readme.md index 261598798b..600abe98f7 100644 --- a/packages/geom-closest-point/tpl.readme.md +++ b/packages/geom-closest-point/tpl.readme.md @@ -58,6 +58,8 @@ ${docLink} ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-fuzz/tpl.readme.md b/packages/geom-fuzz/tpl.readme.md index 04a77667ca..5d8fef9f60 100644 --- a/packages/geom-fuzz/tpl.readme.md +++ b/packages/geom-fuzz/tpl.readme.md @@ -45,6 +45,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-hull/tpl.readme.md b/packages/geom-hull/tpl.readme.md index 3fbb8bb9f0..d8530a5959 100644 --- a/packages/geom-hull/tpl.readme.md +++ b/packages/geom-hull/tpl.readme.md @@ -51,6 +51,8 @@ grahamScan2([[0, 0], [50, 10], [100, 0], [80, 50], [100, 100], [50, 90], [0, 100 ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-io-obj/tpl.readme.md b/packages/geom-io-obj/tpl.readme.md index 83b37b8b8f..c9d14d6830 100644 --- a/packages/geom-io-obj/tpl.readme.md +++ b/packages/geom-io-obj/tpl.readme.md @@ -139,6 +139,8 @@ benchmarking: parse w/ tessellation ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-isec/tpl.readme.md b/packages/geom-isec/tpl.readme.md index bd9747ffdb..44f8215ce0 100644 --- a/packages/geom-isec/tpl.readme.md +++ b/packages/geom-isec/tpl.readme.md @@ -73,6 +73,8 @@ res.type === isec.IntersectionType.INTERSECT ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-isoline/tpl.readme.md b/packages/geom-isoline/tpl.readme.md index f723fa430b..cbe20af1f2 100644 --- a/packages/geom-isoline/tpl.readme.md +++ b/packages/geom-isoline/tpl.readme.md @@ -96,6 +96,8 @@ fs.writeFileSync("contours.svg", g.asSvg(doc)); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-poly-utils/tpl.readme.md b/packages/geom-poly-utils/tpl.readme.md index 114a21b538..f8e4d4fb2b 100644 --- a/packages/geom-poly-utils/tpl.readme.md +++ b/packages/geom-poly-utils/tpl.readme.md @@ -57,6 +57,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-resample/tpl.readme.md b/packages/geom-resample/tpl.readme.md index b25289a288..db1ad3e28f 100644 --- a/packages/geom-resample/tpl.readme.md +++ b/packages/geom-resample/tpl.readme.md @@ -66,6 +66,8 @@ simplify(pts, 0, true) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-splines/tpl.readme.md b/packages/geom-splines/tpl.readme.md index 386d32b2b6..8bf05574e8 100644 --- a/packages/geom-splines/tpl.readme.md +++ b/packages/geom-splines/tpl.readme.md @@ -78,6 +78,8 @@ each vertex corner, taking into the convexity of each poly vertex. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-subdiv-curve/tpl.readme.md b/packages/geom-subdiv-curve/tpl.readme.md index dae2468cb0..c75d77e622 100644 --- a/packages/geom-subdiv-curve/tpl.readme.md +++ b/packages/geom-subdiv-curve/tpl.readme.md @@ -64,6 +64,8 @@ gsc.subdivide([[0,0], [100,0], [100,100], [0,100]], gsc.SUBDIV_CHAIKIN_CLOSED, 4 ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-tessellate/tpl.readme.md b/packages/geom-tessellate/tpl.readme.md index 3817cbf0bb..178ac52ef5 100644 --- a/packages/geom-tessellate/tpl.readme.md +++ b/packages/geom-tessellate/tpl.readme.md @@ -54,6 +54,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom-voronoi/tpl.readme.md b/packages/geom-voronoi/tpl.readme.md index 459095350b..4b4624fae8 100644 --- a/packages/geom-voronoi/tpl.readme.md +++ b/packages/geom-voronoi/tpl.readme.md @@ -84,6 +84,8 @@ document.body.innerHtml = g.asSvg( ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/geom/tpl.readme.md b/packages/geom/tpl.readme.md index 37bf960e44..a9877feeaa 100644 --- a/packages/geom/tpl.readme.md +++ b/packages/geom/tpl.readme.md @@ -55,6 +55,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/gp/tpl.readme.md b/packages/gp/tpl.readme.md index fa161807c1..b7c767e9b8 100644 --- a/packages/gp/tpl.readme.md +++ b/packages/gp/tpl.readme.md @@ -64,6 +64,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/grid-iterators/tpl.readme.md b/packages/grid-iterators/tpl.readme.md index 9bef7ee467..2be8ebe4a3 100644 --- a/packages/grid-iterators/tpl.readme.md +++ b/packages/grid-iterators/tpl.readme.md @@ -165,6 +165,8 @@ import * as gi from "@thi.ng/grid-iterators"; ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hdiff/tpl.readme.md b/packages/hdiff/tpl.readme.md index a63fc62de1..84fa5d6edf 100644 --- a/packages/hdiff/tpl.readme.md +++ b/packages/hdiff/tpl.readme.md @@ -97,6 +97,8 @@ Compiles a theme config into a complete CSS stylesheet string (using ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hdom-canvas/tpl.readme.md b/packages/hdom-canvas/tpl.readme.md index 56690ee2c7..2f86362d5a 100644 --- a/packages/hdom-canvas/tpl.readme.md +++ b/packages/hdom-canvas/tpl.readme.md @@ -216,6 +216,8 @@ transformations. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hdom-components/tpl.readme.md b/packages/hdom-components/tpl.readme.md index b4209130e7..730087f768 100644 --- a/packages/hdom-components/tpl.readme.md +++ b/packages/hdom-components/tpl.readme.md @@ -74,6 +74,8 @@ ${docLink} ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hdom-mock/tpl.readme.md b/packages/hdom-mock/tpl.readme.md index ebb4afab9e..3b57305731 100644 --- a/packages/hdom-mock/tpl.readme.md +++ b/packages/hdom-mock/tpl.readme.md @@ -90,6 +90,8 @@ impl.root.children[0].toHiccup(); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hdom/tpl.readme.md b/packages/hdom/tpl.readme.md index 1f8f3204f1..2d7fa0ab6e 100644 --- a/packages/hdom/tpl.readme.md +++ b/packages/hdom/tpl.readme.md @@ -1115,6 +1115,8 @@ Some stress test benchmarks are here: ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/heaps/tpl.readme.md b/packages/heaps/tpl.readme.md index 0e33f3bacb..22308ea7db 100644 --- a/packages/heaps/tpl.readme.md +++ b/packages/heaps/tpl.readme.md @@ -73,6 +73,8 @@ h.push(24); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hex/tpl.readme.md b/packages/hex/tpl.readme.md index 46fc4bfe01..2b595ca981 100644 --- a/packages/hex/tpl.readme.md +++ b/packages/hex/tpl.readme.md @@ -81,6 +81,8 @@ h.U32LE(BUF, 4) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hiccup-canvas/tpl.readme.md b/packages/hiccup-canvas/tpl.readme.md index cd056d2d0e..baf6be62e7 100644 --- a/packages/hiccup-canvas/tpl.readme.md +++ b/packages/hiccup-canvas/tpl.readme.md @@ -417,6 +417,8 @@ package for creating different kinds of transformation matrices, e.g. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hiccup-carbon-icons/tpl.readme.md b/packages/hiccup-carbon-icons/tpl.readme.md index d75482b004..2f4b52cf43 100644 --- a/packages/hiccup-carbon-icons/tpl.readme.md +++ b/packages/hiccup-carbon-icons/tpl.readme.md @@ -113,6 +113,8 @@ yarn build ${authors} +${pkg.cite} + ## License The copyright of the original icons is with IBM. The icons were published under diff --git a/packages/hiccup-css/tpl.readme.md b/packages/hiccup-css/tpl.readme.md index 9671c7d5d1..a06c028a32 100644 --- a/packages/hiccup-css/tpl.readme.md +++ b/packages/hiccup-css/tpl.readme.md @@ -601,6 +601,8 @@ const QUOTED_FNS = { ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hiccup-html/tpl.readme.md b/packages/hiccup-html/tpl.readme.md index efe91e7d8f..3e397add58 100644 --- a/packages/hiccup-html/tpl.readme.md +++ b/packages/hiccup-html/tpl.readme.md @@ -293,6 +293,8 @@ const el = defElement("a", { b: 1 }); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hiccup-markdown/tpl.readme.md b/packages/hiccup-markdown/tpl.readme.md index 3ba992b8a3..45dd4e590a 100644 --- a/packages/hiccup-markdown/tpl.readme.md +++ b/packages/hiccup-markdown/tpl.readme.md @@ -354,6 +354,8 @@ More info [here](http://thi.ng/hiccup-markdown). ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hiccup-svg/tpl.readme.md b/packages/hiccup-svg/tpl.readme.md index 7b817e9b91..db56cf4b61 100644 --- a/packages/hiccup-svg/tpl.readme.md +++ b/packages/hiccup-svg/tpl.readme.md @@ -190,6 +190,8 @@ Result: ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/hiccup/tpl.readme.md b/packages/hiccup/tpl.readme.md index df5508a364..26e29f1996 100644 --- a/packages/hiccup/tpl.readme.md +++ b/packages/hiccup/tpl.readme.md @@ -572,6 +572,8 @@ considered](https://github.com/thi-ng/umbrella/blob/develop/packages/hiccup/src/ ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/idgen/tpl.readme.md b/packages/idgen/tpl.readme.md index eca94db5a6..a80dee1a47 100644 --- a/packages/idgen/tpl.readme.md +++ b/packages/idgen/tpl.readme.md @@ -157,6 +157,8 @@ ids.next(); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/iges/tpl.readme.md b/packages/iges/tpl.readme.md index 3ffe1ccb2c..b008655724 100644 --- a/packages/iges/tpl.readme.md +++ b/packages/iges/tpl.readme.md @@ -92,6 +92,8 @@ S0000002G0000003D0000002P0000003 T 1 ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/imgui/tpl.readme.md b/packages/imgui/tpl.readme.md index 86fb767ce0..2e9017159a 100644 --- a/packages/imgui/tpl.readme.md +++ b/packages/imgui/tpl.readme.md @@ -234,6 +234,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/interceptors/tpl.readme.md b/packages/interceptors/tpl.readme.md index 8a871bc6f9..9c9fcc1f16 100644 --- a/packages/interceptors/tpl.readme.md +++ b/packages/interceptors/tpl.readme.md @@ -128,6 +128,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/intervals/tpl.readme.md b/packages/intervals/tpl.readme.md index 4bcdff7d87..19a6816eb0 100644 --- a/packages/intervals/tpl.readme.md +++ b/packages/intervals/tpl.readme.md @@ -131,6 +131,8 @@ interval("[0..1)").clamp(2, 1e-3) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/iterators/tpl.readme.md b/packages/iterators/tpl.readme.md index a134d0d002..aafbe6e8e6 100644 --- a/packages/iterators/tpl.readme.md +++ b/packages/iterators/tpl.readme.md @@ -1092,6 +1092,8 @@ ti.zip(ti.map((x)=> x.id, langs), langs) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/layout/tpl.readme.md b/packages/layout/tpl.readme.md index eeeca743d7..5a5606e4df 100644 --- a/packages/layout/tpl.readme.md +++ b/packages/layout/tpl.readme.md @@ -99,6 +99,8 @@ twoCols.next([1, 2]); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/leb128/tpl.readme.md b/packages/leb128/tpl.readme.md index 856d5304fb..07891ddd12 100644 --- a/packages/leb128/tpl.readme.md +++ b/packages/leb128/tpl.readme.md @@ -104,6 +104,8 @@ yarn test ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/lsys/tpl.readme.md b/packages/lsys/tpl.readme.md index d656f012aa..978d7abeab 100644 --- a/packages/lsys/tpl.readme.md +++ b/packages/lsys/tpl.readme.md @@ -219,6 +219,8 @@ rnd: IRandom; ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/malloc/tpl.readme.md b/packages/malloc/tpl.readme.md index bfae9d9b20..55f8bc9a04 100644 --- a/packages/malloc/tpl.readme.md +++ b/packages/malloc/tpl.readme.md @@ -307,6 +307,8 @@ allocating tiny arrays is slightly slower than the vanilla version... YMMV! ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/math/tpl.readme.md b/packages/math/tpl.readme.md index f2ad3b02b0..01bf8d4541 100644 --- a/packages/math/tpl.readme.md +++ b/packages/math/tpl.readme.md @@ -50,6 +50,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/matrices/tpl.readme.md b/packages/matrices/tpl.readme.md index bf567c070b..23a94d8ebe 100644 --- a/packages/matrices/tpl.readme.md +++ b/packages/matrices/tpl.readme.md @@ -153,6 +153,8 @@ ${docLink} ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/memoize/tpl.readme.md b/packages/memoize/tpl.readme.md index ffff9c03b1..bc80179641 100644 --- a/packages/memoize/tpl.readme.md +++ b/packages/memoize/tpl.readme.md @@ -117,6 +117,8 @@ dotProduct([1,2], [3,4]); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/mime/tpl.readme.md b/packages/mime/tpl.readme.md index 3f686a0c7c..baac3632d2 100644 --- a/packages/mime/tpl.readme.md +++ b/packages/mime/tpl.readme.md @@ -79,6 +79,8 @@ preferredType("foo", "text/plain") ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/morton/tpl.readme.md b/packages/morton/tpl.readme.md index 51f878e6cd..293c33917a 100644 --- a/packages/morton/tpl.readme.md +++ b/packages/morton/tpl.readme.md @@ -120,6 +120,8 @@ m.demuxScaled2(m.muxScaled2(0.25, 0.75)) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/oquery/tpl.readme.md b/packages/oquery/tpl.readme.md index 97b3e4141d..66e179cc0e 100644 --- a/packages/oquery/tpl.readme.md +++ b/packages/oquery/tpl.readme.md @@ -105,6 +105,8 @@ query(DB, (id) => id > "a" && id < "c", null, null) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/parse/tpl.readme.md b/packages/parse/tpl.readme.md index 946383b8e1..0420bd9953 100644 --- a/packages/parse/tpl.readme.md +++ b/packages/parse/tpl.readme.md @@ -494,6 +494,8 @@ console.log(stack); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/paths/tpl.readme.md b/packages/paths/tpl.readme.md index 8a9dc9d760..75d778e452 100644 --- a/packages/paths/tpl.readme.md +++ b/packages/paths/tpl.readme.md @@ -308,6 +308,8 @@ exists({ a: { b: { c: [null] } } }, "a.b.c.1"); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/pixel/tpl.readme.md b/packages/pixel/tpl.readme.md index be4657f4d6..a9a702f4e0 100644 --- a/packages/pixel/tpl.readme.md +++ b/packages/pixel/tpl.readme.md @@ -189,6 +189,8 @@ TODO see examples & source comments for now ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/pointfree-lang/tpl.readme.md b/packages/pointfree-lang/tpl.readme.md index 0419c6b5d7..f682bb4095 100644 --- a/packages/pointfree-lang/tpl.readme.md +++ b/packages/pointfree-lang/tpl.readme.md @@ -658,6 +658,8 @@ pf.runU(src, {bingo: 42}, [43]); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/pointfree/tpl.readme.md b/packages/pointfree/tpl.readme.md index d16ed33cbe..521f8e203f 100644 --- a/packages/pointfree/tpl.readme.md +++ b/packages/pointfree/tpl.readme.md @@ -1081,6 +1081,8 @@ Like `run()`, but returns result environment. Syntax sugar for: ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/poisson/tpl.readme.md b/packages/poisson/tpl.readme.md index 271c24cd30..462a7bc141 100644 --- a/packages/poisson/tpl.readme.md +++ b/packages/poisson/tpl.readme.md @@ -164,6 +164,8 @@ document.body.innerHTML = asSvg( ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/porter-duff/tpl.readme.md b/packages/porter-duff/tpl.readme.md index d0f00c9e05..12310a1052 100644 --- a/packages/porter-duff/tpl.readme.md +++ b/packages/porter-duff/tpl.readme.md @@ -146,6 +146,8 @@ Note: HTML Canvas `ImageData` is using non-premultiplied colors. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/prefixes/tpl.readme.md b/packages/prefixes/tpl.readme.md index 03d9c35d8a..222f4f2aab 100644 --- a/packages/prefixes/tpl.readme.md +++ b/packages/prefixes/tpl.readme.md @@ -95,6 +95,8 @@ Serialized HTML/RDFa result: ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/quad-edge/tpl.readme.md b/packages/quad-edge/tpl.readme.md index 41965246d7..5888e548ee 100644 --- a/packages/quad-edge/tpl.readme.md +++ b/packages/quad-edge/tpl.readme.md @@ -56,6 +56,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/ramp/tpl.readme.md b/packages/ramp/tpl.readme.md index e69322d66b..2708703615 100644 --- a/packages/ramp/tpl.readme.md +++ b/packages/ramp/tpl.readme.md @@ -68,6 +68,8 @@ for(let i = 0; i <= 10; i++) { ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/random/tpl.readme.md b/packages/random/tpl.readme.md index f0638515e0..b71dada354 100644 --- a/packages/random/tpl.readme.md +++ b/packages/random/tpl.readme.md @@ -90,6 +90,8 @@ rnd.gaussian() ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/range-coder/tpl.readme.md b/packages/range-coder/tpl.readme.md index c8220a51c2..afe1578405 100644 --- a/packages/range-coder/tpl.readme.md +++ b/packages/range-coder/tpl.readme.md @@ -62,6 +62,8 @@ dest = rc.decodeBytes(packed); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rdom-canvas/tpl.readme.md b/packages/rdom-canvas/tpl.readme.md index 82b7b45100..c1a3304490 100644 --- a/packages/rdom-canvas/tpl.readme.md +++ b/packages/rdom-canvas/tpl.readme.md @@ -43,6 +43,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rdom-components/tpl.readme.md b/packages/rdom-components/tpl.readme.md index a856b9abb6..1ebe36d698 100644 --- a/packages/rdom-components/tpl.readme.md +++ b/packages/rdom-components/tpl.readme.md @@ -51,6 +51,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rdom/tpl.readme.md b/packages/rdom/tpl.readme.md index 580a4a1ef0..3457f89520 100644 --- a/packages/rdom/tpl.readme.md +++ b/packages/rdom/tpl.readme.md @@ -110,6 +110,8 @@ $compile([ ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/resolve-map/tpl.readme.md b/packages/resolve-map/tpl.readme.md index c338402202..6690c63234 100644 --- a/packages/resolve-map/tpl.readme.md +++ b/packages/resolve-map/tpl.readme.md @@ -252,6 +252,8 @@ res.e(2); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rle-pack/tpl.readme.md b/packages/rle-pack/tpl.readme.md index ca146bdd2d..178178b1b9 100644 --- a/packages/rle-pack/tpl.readme.md +++ b/packages/rle-pack/tpl.readme.md @@ -89,6 +89,8 @@ unpacked = new Uint8Array(decode(alt)); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/router/tpl.readme.md b/packages/router/tpl.readme.md index ee0811dc83..55b6728eba 100644 --- a/packages/router/tpl.readme.md +++ b/packages/router/tpl.readme.md @@ -147,6 +147,8 @@ code](https://github.com/thi-ng/umbrella/blob/develop/packages/router/src/api.ts ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rstream-csp/tpl.readme.md b/packages/rstream-csp/tpl.readme.md index 3f7c24216a..8b2d703924 100644 --- a/packages/rstream-csp/tpl.readme.md +++ b/packages/rstream-csp/tpl.readme.md @@ -68,6 +68,8 @@ stream.subscribe(rs.trace("tentimes"), tx.map(x => x * 10)); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rstream-dot/tpl.readme.md b/packages/rstream-dot/tpl.readme.md index d9e67e658d..2b8879d540 100644 --- a/packages/rstream-dot/tpl.readme.md +++ b/packages/rstream-dot/tpl.readme.md @@ -93,6 +93,8 @@ This will generate this diagram: ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rstream-gestures/tpl.readme.md b/packages/rstream-gestures/tpl.readme.md index 1ced6a32d6..61264b7a23 100644 --- a/packages/rstream-gestures/tpl.readme.md +++ b/packages/rstream-gestures/tpl.readme.md @@ -130,6 +130,8 @@ gestures.subscribe( ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rstream-graph/tpl.readme.md b/packages/rstream-graph/tpl.readme.md index b8a5a76c7b..7d6aef010d 100644 --- a/packages/rstream-graph/tpl.readme.md +++ b/packages/rstream-graph/tpl.readme.md @@ -183,6 +183,8 @@ further details. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rstream-log-file/tpl.readme.md b/packages/rstream-log-file/tpl.readme.md index 32e241796a..579ed3c95f 100644 --- a/packages/rstream-log-file/tpl.readme.md +++ b/packages/rstream-log-file/tpl.readme.md @@ -62,6 +62,8 @@ writer.done(); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rstream-log/tpl.readme.md b/packages/rstream-log/tpl.readme.md index 327cdd8c6b..705f42f6ca 100644 --- a/packages/rstream-log/tpl.readme.md +++ b/packages/rstream-log/tpl.readme.md @@ -87,6 +87,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rstream-query/tpl.readme.md b/packages/rstream-query/tpl.readme.md index b43cef5052..c4e0ed6a7c 100644 --- a/packages/rstream-query/tpl.readme.md +++ b/packages/rstream-query/tpl.readme.md @@ -189,6 +189,8 @@ The source code for the above example is ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/rstream/tpl.readme.md b/packages/rstream/tpl.readme.md index 7e3f2f57bd..f198a74353 100644 --- a/packages/rstream/tpl.readme.md +++ b/packages/rstream/tpl.readme.md @@ -716,6 +716,8 @@ Create value stream from worker messages. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/sax/tpl.readme.md b/packages/sax/tpl.readme.md index 78bd7f9186..5ba5e1a5f0 100644 --- a/packages/sax/tpl.readme.md +++ b/packages/sax/tpl.readme.md @@ -297,6 +297,8 @@ The `type` key in each emitted result object is a TypeScript enum with the follo ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/scenegraph/tpl.readme.md b/packages/scenegraph/tpl.readme.md index 82b7b45100..c1a3304490 100644 --- a/packages/scenegraph/tpl.readme.md +++ b/packages/scenegraph/tpl.readme.md @@ -43,6 +43,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/seq/tpl.readme.md b/packages/seq/tpl.readme.md index 2b29657e3b..4c125512f5 100644 --- a/packages/seq/tpl.readme.md +++ b/packages/seq/tpl.readme.md @@ -191,6 +191,8 @@ fib().next().next().next().next().first() ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/sexpr/tpl.readme.md b/packages/sexpr/tpl.readme.md index 18985d3c81..587473a564 100644 --- a/packages/sexpr/tpl.readme.md +++ b/packages/sexpr/tpl.readme.md @@ -249,6 +249,8 @@ parse(``, syntax); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/shader-ast-glsl/tpl.readme.md b/packages/shader-ast-glsl/tpl.readme.md index 621fda0965..ffefa6bdfb 100644 --- a/packages/shader-ast-glsl/tpl.readme.md +++ b/packages/shader-ast-glsl/tpl.readme.md @@ -91,6 +91,8 @@ fragColor = vec4(color, 1.0); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/shader-ast-js/tpl.readme.md b/packages/shader-ast-js/tpl.readme.md index a92b14e634..3885e3ec93 100644 --- a/packages/shader-ast-js/tpl.readme.md +++ b/packages/shader-ast-js/tpl.readme.md @@ -87,6 +87,8 @@ Module.hello(10); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/shader-ast-stdlib/tpl.readme.md b/packages/shader-ast-stdlib/tpl.readme.md index 289e3ba414..99454204ce 100644 --- a/packages/shader-ast-stdlib/tpl.readme.md +++ b/packages/shader-ast-stdlib/tpl.readme.md @@ -393,6 +393,8 @@ for reference. ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/shader-ast/tpl.readme.md b/packages/shader-ast/tpl.readme.md index 6061810a31..76eff4b50d 100644 --- a/packages/shader-ast/tpl.readme.md +++ b/packages/shader-ast/tpl.readme.md @@ -500,6 +500,8 @@ constantFolding(ast) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/simd/tpl.readme.md b/packages/simd/tpl.readme.md index cf10fede20..476e956542 100644 --- a/packages/simd/tpl.readme.md +++ b/packages/simd/tpl.readme.md @@ -179,6 +179,8 @@ points ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/soa/tpl.readme.md b/packages/soa/tpl.readme.md index 05455ba7db..1271f108f0 100644 --- a/packages/soa/tpl.readme.md +++ b/packages/soa/tpl.readme.md @@ -47,6 +47,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/sparse/tpl.readme.md b/packages/sparse/tpl.readme.md index 82b7b45100..c1a3304490 100644 --- a/packages/sparse/tpl.readme.md +++ b/packages/sparse/tpl.readme.md @@ -43,6 +43,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/strings/tpl.readme.md b/packages/strings/tpl.readme.md index fdc4b3f516..8e7566efbc 100644 --- a/packages/strings/tpl.readme.md +++ b/packages/strings/tpl.readme.md @@ -121,6 +121,8 @@ fmt("eur", 1.2345, 0.25) ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/system/tpl.readme.md b/packages/system/tpl.readme.md index 07da28a4be..94888c550b 100644 --- a/packages/system/tpl.readme.md +++ b/packages/system/tpl.readme.md @@ -187,6 +187,8 @@ Resulting visualization: ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/text-canvas/tpl.readme.md b/packages/text-canvas/tpl.readme.md index ba19b7c7ca..8a81236798 100644 --- a/packages/text-canvas/tpl.readme.md +++ b/packages/text-canvas/tpl.readme.md @@ -385,6 +385,8 @@ setInterval(() => { ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/transducers-binary/tpl.readme.md b/packages/transducers-binary/tpl.readme.md index 136cbe841e..4bc5810b1e 100644 --- a/packages/transducers-binary/tpl.readme.md +++ b/packages/transducers-binary/tpl.readme.md @@ -250,6 +250,8 @@ tx.transduce(tx.comp(txb.base64Decode(), txb.utf8Decode()), tx.str(), buf); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/transducers-fsm/tpl.readme.md b/packages/transducers-fsm/tpl.readme.md index 59891e15b8..0f75dd8c7b 100644 --- a/packages/transducers-fsm/tpl.readme.md +++ b/packages/transducers-fsm/tpl.readme.md @@ -171,6 +171,8 @@ to the configured `terminate` state, processing is terminated (by calling ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/transducers-hdom/tpl.readme.md b/packages/transducers-hdom/tpl.readme.md index 91310c5898..93cba4e3df 100644 --- a/packages/transducers-hdom/tpl.readme.md +++ b/packages/transducers-hdom/tpl.readme.md @@ -106,6 +106,8 @@ clickStream.next(0); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/transducers-patch/tpl.readme.md b/packages/transducers-patch/tpl.readme.md index bc88509361..875cfe33f4 100644 --- a/packages/transducers-patch/tpl.readme.md +++ b/packages/transducers-patch/tpl.readme.md @@ -145,6 +145,8 @@ state.next([Patch.DELETE, "x"]); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/transducers-stats/tpl.readme.md b/packages/transducers-stats/tpl.readme.md index 6a0d5f9457..504e427f5e 100644 --- a/packages/transducers-stats/tpl.readme.md +++ b/packages/transducers-stats/tpl.readme.md @@ -108,6 +108,8 @@ tx.transduce( ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/transducers/tpl.readme.md b/packages/transducers/tpl.readme.md index 1ade7e983f..8f777b9edd 100644 --- a/packages/transducers/tpl.readme.md +++ b/packages/transducers/tpl.readme.md @@ -847,6 +847,8 @@ and return a reduced result (as if it would be called via `reduce()`). ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/unionstruct/tpl.readme.md b/packages/unionstruct/tpl.readme.md index 022c49031f..31516ece25 100644 --- a/packages/unionstruct/tpl.readme.md +++ b/packages/unionstruct/tpl.readme.md @@ -224,6 +224,8 @@ bitfields.__offsets ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/vclock/tpl.readme.md b/packages/vclock/tpl.readme.md index 7c5f921393..c3e301f33d 100644 --- a/packages/vclock/tpl.readme.md +++ b/packages/vclock/tpl.readme.md @@ -82,6 +82,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/vector-pools/tpl.readme.md b/packages/vector-pools/tpl.readme.md index 8ff66ab47c..388bfeef4f 100644 --- a/packages/vector-pools/tpl.readme.md +++ b/packages/vector-pools/tpl.readme.md @@ -227,6 +227,8 @@ const geo = new vp.AttribPool( ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/vectors/tpl.readme.md b/packages/vectors/tpl.readme.md index 69b5174606..334b2ea37b 100644 --- a/packages/vectors/tpl.readme.md +++ b/packages/vectors/tpl.readme.md @@ -541,6 +541,8 @@ For more information about the code generator see: ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/viz/tpl.readme.md b/packages/viz/tpl.readme.md index ef65736da9..855d81fa10 100644 --- a/packages/viz/tpl.readme.md +++ b/packages/viz/tpl.readme.md @@ -74,6 +74,10 @@ TODO ${authors} +${pkg.cite} + +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/webgl-msdf/tpl.readme.md b/packages/webgl-msdf/tpl.readme.md index 7cf54d029d..e61890c4de 100644 --- a/packages/webgl-msdf/tpl.readme.md +++ b/packages/webgl-msdf/tpl.readme.md @@ -56,6 +56,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/webgl-shadertoy/tpl.readme.md b/packages/webgl-shadertoy/tpl.readme.md index 9df998a3bd..a143229930 100644 --- a/packages/webgl-shadertoy/tpl.readme.md +++ b/packages/webgl-shadertoy/tpl.readme.md @@ -105,6 +105,8 @@ toy.start(); ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/webgl/tpl.readme.md b/packages/webgl/tpl.readme.md index 4cce2319e2..66d5ec7380 100644 --- a/packages/webgl/tpl.readme.md +++ b/packages/webgl/tpl.readme.md @@ -71,6 +71,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/packages/zipper/tpl.readme.md b/packages/zipper/tpl.readme.md index 45bbab3a7d..00b76ba7d7 100644 --- a/packages/zipper/tpl.readme.md +++ b/packages/zipper/tpl.readme.md @@ -120,6 +120,8 @@ total: 4616ms, mean: 0.4616ms, runs: 10000 ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} diff --git a/scripts/make-module b/scripts/make-module index 3ad2f12ee6..42f76b43b7 100755 --- a/scripts/make-module +++ b/scripts/make-module @@ -225,6 +225,8 @@ TODO ${authors} +${pkg.cite} + ## License © ${copyright} // ${license} From 442a823b458ef691d476193a7b45370fa16a3f83 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 4 Dec 2020 13:36:41 +0000 Subject: [PATCH 09/71] docs: update all readmes --- packages/adapt-dpi/README.md | 13 ++++++++++++- packages/adjacency/README.md | 13 ++++++++++++- packages/api/README.md | 13 ++++++++++++- packages/arrays/README.md | 13 ++++++++++++- packages/associative/README.md | 13 ++++++++++++- packages/atom/README.md | 13 ++++++++++++- packages/bench/README.md | 13 ++++++++++++- packages/bencode/README.md | 13 ++++++++++++- packages/binary/README.md | 13 ++++++++++++- packages/bitfield/README.md | 13 ++++++++++++- packages/bitstream/README.md | 13 ++++++++++++- packages/cache/README.md | 13 ++++++++++++- packages/checks/README.md | 13 ++++++++++++- packages/color/README.md | 13 ++++++++++++- packages/colored-noise/README.md | 13 ++++++++++++- packages/compare/README.md | 13 ++++++++++++- packages/compose/README.md | 13 ++++++++++++- packages/csp/README.md | 13 ++++++++++++- packages/csv/README.md | 13 ++++++++++++- packages/date/README.md | 13 ++++++++++++- packages/dcons/README.md | 13 ++++++++++++- packages/defmulti/README.md | 13 ++++++++++++- packages/dgraph-dot/README.md | 13 ++++++++++++- packages/dgraph/README.md | 13 ++++++++++++- packages/diff/README.md | 13 ++++++++++++- packages/dl-asset/README.md | 13 ++++++++++++- packages/dlogic/README.md | 13 ++++++++++++- packages/dot/README.md | 13 ++++++++++++- packages/dsp-io-wav/README.md | 13 ++++++++++++- packages/dsp/README.md | 13 ++++++++++++- packages/dual-algebra/README.md | 13 ++++++++++++- packages/dynvar/README.md | 13 ++++++++++++- packages/ecs/README.md | 13 ++++++++++++- packages/egf/README.md | 13 ++++++++++++- packages/equiv/README.md | 13 ++++++++++++- packages/errors/README.md | 13 ++++++++++++- packages/fsm/README.md | 13 ++++++++++++- packages/geom-accel/README.md | 13 ++++++++++++- packages/geom-api/README.md | 13 ++++++++++++- packages/geom-arc/README.md | 13 ++++++++++++- packages/geom-clip-line/README.md | 13 ++++++++++++- packages/geom-clip-poly/README.md | 13 ++++++++++++- packages/geom-closest-point/README.md | 13 ++++++++++++- packages/geom-fuzz/README.md | 13 ++++++++++++- packages/geom-hull/README.md | 13 ++++++++++++- packages/geom-io-obj/README.md | 13 ++++++++++++- packages/geom-isec/README.md | 13 ++++++++++++- packages/geom-isoline/README.md | 13 ++++++++++++- packages/geom-poly-utils/README.md | 13 ++++++++++++- packages/geom-resample/README.md | 13 ++++++++++++- packages/geom-splines/README.md | 13 ++++++++++++- packages/geom-subdiv-curve/README.md | 13 ++++++++++++- packages/geom-tessellate/README.md | 13 ++++++++++++- packages/geom-voronoi/README.md | 13 ++++++++++++- packages/geom/README.md | 13 ++++++++++++- packages/gp/README.md | 13 ++++++++++++- packages/grid-iterators/README.md | 13 ++++++++++++- packages/hdiff/README.md | 13 ++++++++++++- packages/hdom-canvas/README.md | 13 ++++++++++++- packages/hdom-components/README.md | 13 ++++++++++++- packages/hdom-mock/README.md | 13 ++++++++++++- packages/hdom/README.md | 13 ++++++++++++- packages/heaps/README.md | 13 ++++++++++++- packages/hex/README.md | 13 ++++++++++++- packages/hiccup-canvas/README.md | 13 ++++++++++++- packages/hiccup-carbon-icons/README.md | 13 ++++++++++++- packages/hiccup-css/README.md | 13 ++++++++++++- packages/hiccup-html/README.md | 13 ++++++++++++- packages/hiccup-markdown/README.md | 13 ++++++++++++- packages/hiccup-svg/README.md | 13 ++++++++++++- packages/hiccup/README.md | 13 ++++++++++++- packages/idgen/README.md | 13 ++++++++++++- packages/iges/README.md | 13 ++++++++++++- packages/imgui/README.md | 13 ++++++++++++- packages/interceptors/README.md | 13 ++++++++++++- packages/intervals/README.md | 13 ++++++++++++- packages/iterators/README.md | 13 ++++++++++++- packages/layout/README.md | 13 ++++++++++++- packages/leb128/README.md | 13 ++++++++++++- packages/lsys/README.md | 13 ++++++++++++- packages/malloc/README.md | 13 ++++++++++++- packages/math/README.md | 13 ++++++++++++- packages/matrices/README.md | 13 ++++++++++++- packages/memoize/README.md | 13 ++++++++++++- packages/mime/README.md | 13 ++++++++++++- packages/morton/README.md | 13 ++++++++++++- packages/oquery/README.md | 15 +++++++++++++-- packages/parse/README.md | 13 ++++++++++++- packages/paths/README.md | 13 ++++++++++++- packages/pixel/README.md | 13 ++++++++++++- packages/pointfree-lang/README.md | 13 ++++++++++++- packages/pointfree/README.md | 13 ++++++++++++- packages/poisson/README.md | 13 ++++++++++++- packages/porter-duff/README.md | 13 ++++++++++++- packages/prefixes/README.md | 13 ++++++++++++- packages/quad-edge/README.md | 13 ++++++++++++- packages/ramp/README.md | 13 ++++++++++++- packages/random/README.md | 13 ++++++++++++- packages/range-coder/README.md | 13 ++++++++++++- packages/rdom-canvas/README.md | 13 ++++++++++++- packages/rdom-components/README.md | 13 ++++++++++++- packages/rdom/README.md | 15 +++++++++++++-- packages/resolve-map/README.md | 13 ++++++++++++- packages/rle-pack/README.md | 13 ++++++++++++- packages/router/README.md | 13 ++++++++++++- packages/rstream-csp/README.md | 13 ++++++++++++- packages/rstream-dot/README.md | 13 ++++++++++++- packages/rstream-gestures/README.md | 13 ++++++++++++- packages/rstream-graph/README.md | 13 ++++++++++++- packages/rstream-log-file/README.md | 13 ++++++++++++- packages/rstream-log/README.md | 13 ++++++++++++- packages/rstream-query/README.md | 13 ++++++++++++- packages/rstream/README.md | 13 ++++++++++++- packages/sax/README.md | 13 ++++++++++++- packages/scenegraph/README.md | 13 ++++++++++++- packages/seq/README.md | 13 ++++++++++++- packages/sexpr/README.md | 13 ++++++++++++- packages/shader-ast-glsl/README.md | 13 ++++++++++++- packages/shader-ast-js/README.md | 13 ++++++++++++- packages/shader-ast-stdlib/README.md | 13 ++++++++++++- packages/shader-ast/README.md | 13 ++++++++++++- packages/simd/README.md | 13 ++++++++++++- packages/soa/README.md | 13 ++++++++++++- packages/sparse/README.md | 13 ++++++++++++- packages/strings/README.md | 13 ++++++++++++- packages/system/README.md | 13 ++++++++++++- packages/text-canvas/README.md | 13 ++++++++++++- packages/transducers-binary/README.md | 13 ++++++++++++- packages/transducers-fsm/README.md | 13 ++++++++++++- packages/transducers-hdom/README.md | 13 ++++++++++++- packages/transducers-patch/README.md | 13 ++++++++++++- packages/transducers-stats/README.md | 13 ++++++++++++- packages/transducers/README.md | 13 ++++++++++++- packages/unionstruct/README.md | 13 ++++++++++++- packages/vclock/README.md | 13 ++++++++++++- packages/vector-pools/README.md | 13 ++++++++++++- packages/vectors/README.md | 13 ++++++++++++- packages/viz/README.md | 24 +++++++++++++++++++++++- packages/webgl-msdf/README.md | 13 ++++++++++++- packages/webgl-shadertoy/README.md | 13 ++++++++++++- packages/webgl/README.md | 13 ++++++++++++- packages/zipper/README.md | 13 ++++++++++++- 142 files changed, 1717 insertions(+), 144 deletions(-) diff --git a/packages/adapt-dpi/README.md b/packages/adapt-dpi/README.md index 874ed35b73..68b75c1677 100644 --- a/packages/adapt-dpi/README.md +++ b/packages/adapt-dpi/README.md @@ -32,7 +32,7 @@ buffer itself based on DPR (e.g. 2x size). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Badapt-dpi%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Badapt-dpi%5D+in%3Atitle) ## Installation @@ -85,6 +85,17 @@ adaptDPI(canvas, 640, 480); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-adapt-dpi, + title = "@thi.ng/adapt-dpi", + author = "Karsten Schmidt", + note = "https://thi.ng/adapt-dpi", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/adjacency/README.md b/packages/adjacency/README.md index 0452b2db0a..9845e5e261 100644 --- a/packages/adjacency/README.md +++ b/packages/adjacency/README.md @@ -26,7 +26,7 @@ Sparse & bitwise adjacency matrices and related functions for directed & undirec **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Badjacency%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Badjacency%5D+in%3Atitle) ## Installation @@ -75,6 +75,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-adjacency, + title = "@thi.ng/adjacency", + author = "Karsten Schmidt", + note = "https://thi.ng/adjacency", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/api/README.md b/packages/api/README.md index 99dc991559..1ffbc4fda8 100644 --- a/packages/api/README.md +++ b/packages/api/README.md @@ -38,7 +38,7 @@ repository. It defines: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bapi%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bapi%5D+in%3Atitle) ## Installation @@ -89,6 +89,17 @@ The following env variables are used to control the behavior of some functions i - Matei Adriel ([@Mateiadrielrafael](https://github.com/Mateiadrielrafael)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-api, + title = "@thi.ng/api", + author = "Karsten Schmidt and others", + note = "https://thi.ng/api", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/arrays/README.md b/packages/arrays/README.md index e37caf182f..afc5c42f01 100644 --- a/packages/arrays/README.md +++ b/packages/arrays/README.md @@ -26,7 +26,7 @@ Array / Arraylike utilities. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Barrays%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Barrays%5D+in%3Atitle) ## Installation @@ -104,6 +104,17 @@ bsGT(binarySearch(src, 40), src.length) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-arrays, + title = "@thi.ng/arrays", + author = "Karsten Schmidt", + note = "https://thi.ng/arrays", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/associative/README.md b/packages/associative/README.md index dc04a4071a..40bdea4b0c 100644 --- a/packages/associative/README.md +++ b/packages/associative/README.md @@ -160,7 +160,7 @@ map.get([3,4], "n/a"); **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bassociative%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bassociative%5D+in%3Atitle) ## Installation @@ -380,6 +380,17 @@ t.knownPrefix(["to", "be", "not"]); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-associative, + title = "@thi.ng/associative", + author = "Karsten Schmidt", + note = "https://thi.ng/associative", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/atom/README.md b/packages/atom/README.md index 7cc78c7d16..9b7c8abc98 100644 --- a/packages/atom/README.md +++ b/packages/atom/README.md @@ -55,7 +55,7 @@ reactive updates from performed state changes. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Batom%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Batom%5D+in%3Atitle) ## Breaking changes @@ -647,6 +647,17 @@ db.canRedo() Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-atom, + title = "@thi.ng/atom", + author = "Karsten Schmidt", + note = "https://thi.ng/atom", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/bench/README.md b/packages/bench/README.md index cc74fe8660..ef910544b9 100644 --- a/packages/bench/README.md +++ b/packages/bench/README.md @@ -35,7 +35,7 @@ still only sourced via `Date.now()`. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bbench%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bbench%5D+in%3Atitle) ## Installation @@ -144,6 +144,17 @@ benchmark(() => fib(40), { title: "fib", iter: 10, warmup: 5 }); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-bench, + title = "@thi.ng/bench", + author = "Karsten Schmidt", + note = "https://thi.ng/bench", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/bencode/README.md b/packages/bencode/README.md index e291e55136..c80c43951f 100644 --- a/packages/bencode/README.md +++ b/packages/bencode/README.md @@ -52,7 +52,7 @@ semi-open `[1e-6,1e21)` interval can be encoded. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bbencode%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bbencode%5D+in%3Atitle) ## Installation @@ -114,6 +114,17 @@ decode(bytes, false) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-bencode, + title = "@thi.ng/bencode", + author = "Karsten Schmidt", + note = "https://thi.ng/bencode", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/binary/README.md b/packages/binary/README.md index 42e904f39d..59967d31be 100644 --- a/packages/binary/README.md +++ b/packages/binary/README.md @@ -26,7 +26,7 @@ This project is part of the **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bbinary%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bbinary%5D+in%3Atitle) ## Installation @@ -70,6 +70,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-binary, + title = "@thi.ng/binary", + author = "Karsten Schmidt", + note = "https://thi.ng/binary", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/bitfield/README.md b/packages/bitfield/README.md index 1965c3b1c5..55e911037d 100644 --- a/packages/bitfield/README.md +++ b/packages/bitfield/README.md @@ -28,7 +28,7 @@ backing the width is always rounded to a multiple of 32. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bbitfield%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bbitfield%5D+in%3Atitle) ## Installation @@ -103,6 +103,17 @@ mat.toString(); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-bitfield, + title = "@thi.ng/bitfield", + author = "Karsten Schmidt", + note = "https://thi.ng/bitfield", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/bitstream/README.md b/packages/bitstream/README.md index ac3b0dfcf8..658b41a816 100644 --- a/packages/bitstream/README.md +++ b/packages/bitstream/README.md @@ -27,7 +27,7 @@ ES6 iterator based read/write bit streams with support for variable word widths. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bbitstream%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bbitstream%5D+in%3Atitle) ## Installation @@ -153,6 +153,17 @@ faster `readBit()` for reading single bits. Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-bitstream, + title = "@thi.ng/bitstream", + author = "Karsten Schmidt", + note = "https://thi.ng/bitstream", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/cache/README.md b/packages/cache/README.md index 996f7718af..310449855b 100644 --- a/packages/cache/README.md +++ b/packages/cache/README.md @@ -47,7 +47,7 @@ strategies](https://en.wikipedia.org/wiki/Cache_replacement_policies). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bcache%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bcache%5D+in%3Atitle) ## Installation @@ -222,6 +222,17 @@ mru = new cache.MRUCache(); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-cache, + title = "@thi.ng/cache", + author = "Karsten Schmidt", + note = "https://thi.ng/cache", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/checks/README.md b/packages/checks/README.md index b6f2cab299..6e1593553b 100644 --- a/packages/checks/README.md +++ b/packages/checks/README.md @@ -27,7 +27,7 @@ Collection of 50+ type, feature & value checks. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bchecks%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bchecks%5D+in%3Atitle) ## Installation @@ -66,6 +66,17 @@ TODO - Gavin Cannizzaro ([@gavinpc-mindgrub](https://github.com/gavinpc-mindgrub)) - Jay Zawrotny ([@eccentric-j](https://github.com/eccentric-j)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-checks, + title = "@thi.ng/checks", + author = "Karsten Schmidt and others", + note = "https://thi.ng/checks", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/color/README.md b/packages/color/README.md index 507465b5df..3cdc53cb2f 100644 --- a/packages/color/README.md +++ b/packages/color/README.md @@ -178,7 +178,7 @@ col.multiCosineGradient( **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bcolor%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bcolor%5D+in%3Atitle) ## Installation @@ -270,6 +270,17 @@ col.transform([], filter, col.RED); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-color, + title = "@thi.ng/color", + author = "Karsten Schmidt", + note = "https://thi.ng/color", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/colored-noise/README.md b/packages/colored-noise/README.md index 4eeb552b7a..45efc33dd8 100644 --- a/packages/colored-noise/README.md +++ b/packages/colored-noise/README.md @@ -343,7 +343,7 @@ white **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bcolored-noise%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bcolored-noise%5D+in%3Atitle) ### Related packages @@ -429,6 +429,17 @@ writeFileSync( Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-colored-noise, + title = "@thi.ng/colored-noise", + author = "Karsten Schmidt", + note = "https://thi.ng/colored-noise", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/compare/README.md b/packages/compare/README.md index 1c2dc4c662..3ea8ef98de 100644 --- a/packages/compare/README.md +++ b/packages/compare/README.md @@ -36,7 +36,7 @@ comparator. See examples below. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bcompare%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bcompare%5D+in%3Atitle) ## Installation @@ -154,6 +154,17 @@ const src = [ Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-compare, + title = "@thi.ng/compare", + author = "Karsten Schmidt", + note = "https://thi.ng/compare", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/compose/README.md b/packages/compose/README.md index 16323c41dc..b39a34e4f5 100644 --- a/packages/compose/README.md +++ b/packages/compose/README.md @@ -25,7 +25,7 @@ Optimized functional composition helpers. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bcompose%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bcompose%5D+in%3Atitle) ## Installation @@ -64,6 +64,17 @@ Package sizes (gzipped, pre-treeshake): ESM: 815 bytes / CJS: 916 bytes / UMD: 9 Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-compose, + title = "@thi.ng/compose", + author = "Karsten Schmidt", + note = "https://thi.ng/compose", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/csp/README.md b/packages/csp/README.md index 8f9a6ea68c..6951b089b6 100644 --- a/packages/csp/README.md +++ b/packages/csp/README.md @@ -44,7 +44,7 @@ ES6 promise based CSP primitives & operations. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bcsp%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bcsp%5D+in%3Atitle) This package might possibly become deprecated soon. See [@thi.ng/rstream](https://github.com/thi-ng/umbrella/tree/develop/packages/rstream) @@ -241,6 +241,17 @@ pub.channel().into(["alice", "bert", "bella", "charlie", "arthur"]); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-csp, + title = "@thi.ng/csp", + author = "Karsten Schmidt", + note = "https://thi.ng/csp", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/csv/README.md b/packages/csv/README.md index e9140b4c48..20349e18aa 100644 --- a/packages/csv/README.md +++ b/packages/csv/README.md @@ -46,7 +46,7 @@ for more details/ideas. **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bcsv%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bcsv%5D+in%3Atitle) ### Planned features @@ -117,6 +117,17 @@ import { parseCSV, upper, float } from "@thi.ng/csv"; Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-csv, + title = "@thi.ng/csv", + author = "Karsten Schmidt", + note = "https://thi.ng/csv", + year = 2014 +} +``` + ## License © 2014 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/date/README.md b/packages/date/README.md index 4b4296f007..fc76d9eace 100644 --- a/packages/date/README.md +++ b/packages/date/README.md @@ -29,7 +29,7 @@ Date/timestamp iterators, formatters, rounding. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdate%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdate%5D+in%3Atitle) ## Installation @@ -221,6 +221,17 @@ fmt(dateTime()); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-date, + title = "@thi.ng/date", + author = "Karsten Schmidt", + note = "https://thi.ng/date", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dcons/README.md b/packages/dcons/README.md index b9ea107b59..6c8e66e9a3 100644 --- a/packages/dcons/README.md +++ b/packages/dcons/README.md @@ -69,7 +69,7 @@ for more LRU, MRU implementations based on managed `DCons` impls... **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdcons%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdcons%5D+in%3Atitle) ## Installation @@ -156,6 +156,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dcons, + title = "@thi.ng/dcons", + author = "Karsten Schmidt", + note = "https://thi.ng/dcons", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/defmulti/README.md b/packages/defmulti/README.md index a5ff6cb064..a9bc59ac67 100644 --- a/packages/defmulti/README.md +++ b/packages/defmulti/README.md @@ -38,7 +38,7 @@ any actual JS type relationships). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdefmulti%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdefmulti%5D+in%3Atitle) ## Installation @@ -373,6 +373,17 @@ console.log(toDot(defDGraph(fn.dependencies()), { id: (id) => id })); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-defmulti, + title = "@thi.ng/defmulti", + author = "Karsten Schmidt", + note = "https://thi.ng/defmulti", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dgraph-dot/README.md b/packages/dgraph-dot/README.md index 66c10a46f3..9171bed657 100644 --- a/packages/dgraph-dot/README.md +++ b/packages/dgraph-dot/README.md @@ -33,7 +33,7 @@ readme & source code for visualization options. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdgraph-dot%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdgraph-dot%5D+in%3Atitle) ## Installation @@ -99,6 +99,17 @@ console.log(toDot(graph, { id: (node) => node })); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dgraph-dot, + title = "@thi.ng/dgraph-dot", + author = "Karsten Schmidt", + note = "https://thi.ng/dgraph-dot", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dgraph/README.md b/packages/dgraph/README.md index 03200b35fe..e37d17bc5e 100644 --- a/packages/dgraph/README.md +++ b/packages/dgraph/README.md @@ -37,7 +37,7 @@ maps & sets as backend. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdgraph%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdgraph%5D+in%3Atitle) ### Support packages @@ -105,6 +105,17 @@ g.sort(); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dgraph, + title = "@thi.ng/dgraph", + author = "Karsten Schmidt", + note = "https://thi.ng/dgraph", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/diff/README.md b/packages/diff/README.md index 6693d1558f..1fd9f411f6 100644 --- a/packages/diff/README.md +++ b/packages/diff/README.md @@ -27,7 +27,7 @@ Customizable diff implementations for arrays (sequential) & objects (associative **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdiff%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdiff%5D+in%3Atitle) ## Installation @@ -85,6 +85,17 @@ The order of optional args to both functions has been swapped to: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-diff, + title = "@thi.ng/diff", + author = "Karsten Schmidt", + note = "https://thi.ng/diff", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dl-asset/README.md b/packages/dl-asset/README.md index 4a0256a27b..4c8374bd4a 100644 --- a/packages/dl-asset/README.md +++ b/packages/dl-asset/README.md @@ -26,7 +26,7 @@ Local asset download for web apps, with automatic MIME type detection. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdl-asset%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdl-asset%5D+in%3Atitle) ## Installation @@ -106,6 +106,17 @@ download("hello.txt", src, { Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dl-asset, + title = "@thi.ng/dl-asset", + author = "Karsten Schmidt", + note = "https://thi.ng/dl-asset", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dlogic/README.md b/packages/dlogic/README.md index c5d6277591..2f095737dd 100644 --- a/packages/dlogic/README.md +++ b/packages/dlogic/README.md @@ -32,7 +32,7 @@ for binary versions of most of the ops provided by this package. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdlogic%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdlogic%5D+in%3Atitle) ## Installation @@ -81,6 +81,17 @@ xor(true, true) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dlogic, + title = "@thi.ng/dlogic", + author = "Karsten Schmidt", + note = "https://thi.ng/dlogic", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dot/README.md b/packages/dot/README.md index e0fd3aab7a..5cc94a1461 100644 --- a/packages/dot/README.md +++ b/packages/dot/README.md @@ -37,7 +37,7 @@ details. **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdot%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdot%5D+in%3Atitle) ## Installation @@ -155,6 +155,17 @@ edge[arrowsize="0.75", fontname="Inconsolata", fontsize="9"]; Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dot, + title = "@thi.ng/dot", + author = "Karsten Schmidt", + note = "https://thi.ng/dot", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dsp-io-wav/README.md b/packages/dsp-io-wav/README.md index 058b164d59..0249dfb651 100644 --- a/packages/dsp-io-wav/README.md +++ b/packages/dsp-io-wav/README.md @@ -25,7 +25,7 @@ WAV file format generation. This is a support package for [@thi.ng/dsp](https:// **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdsp-io-wav%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdsp-io-wav%5D+in%3Atitle) ## Installation @@ -76,6 +76,17 @@ fs.writeFileSync( Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dsp-io-wav, + title = "@thi.ng/dsp-io-wav", + author = "Karsten Schmidt", + note = "https://thi.ng/dsp-io-wav", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dsp/README.md b/packages/dsp/README.md index cd85593ed6..d625ead9c9 100644 --- a/packages/dsp/README.md +++ b/packages/dsp/README.md @@ -45,7 +45,7 @@ Partially ported from other thi.ng projects (e.g. **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdsp%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdsp%5D+in%3Atitle) Even though this library is now at v2.0.0 and still retains most of the features from earlier versions, all recently added features (IGen's, @@ -548,6 +548,17 @@ Desmos](https://www.desmos.com/calculator/lkyf2ag3ta) to experiment. Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dsp, + title = "@thi.ng/dsp", + author = "Karsten Schmidt", + note = "https://thi.ng/dsp", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dual-algebra/README.md b/packages/dual-algebra/README.md index d8b1e249bd..aadc147a99 100644 --- a/packages/dual-algebra/README.md +++ b/packages/dual-algebra/README.md @@ -109,7 +109,7 @@ are suffixed with `S` (for "scalar"): `quadraticS`, `cubicS` and `quarticS`... **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdual-algebra%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdual-algebra%5D+in%3Atitle) ## Installation @@ -197,6 +197,17 @@ f2(2) // [1, 8] Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dual-algebra, + title = "@thi.ng/dual-algebra", + author = "Karsten Schmidt", + note = "https://thi.ng/dual-algebra", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/dynvar/README.md b/packages/dynvar/README.md index 05866feb67..7666a1a7e0 100644 --- a/packages/dynvar/README.md +++ b/packages/dynvar/README.md @@ -30,7 +30,7 @@ References: **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bdynvar%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bdynvar%5D+in%3Atitle) ## Installation @@ -129,6 +129,17 @@ cat foo.txt Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-dynvar, + title = "@thi.ng/dynvar", + author = "Karsten Schmidt", + note = "https://thi.ng/dynvar", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/ecs/README.md b/packages/ecs/README.md index 9645926368..8503504ee1 100644 --- a/packages/ecs/README.md +++ b/packages/ecs/README.md @@ -36,7 +36,7 @@ Entity Component System based around typed arrays & sparse sets. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Becs%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Becs%5D+in%3Atitle) ## Installation @@ -156,6 +156,17 @@ group.forEach((x) => console.log(x)); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-ecs, + title = "@thi.ng/ecs", + author = "Karsten Schmidt", + note = "https://thi.ng/ecs", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/egf/README.md b/packages/egf/README.md index 63d0492563..3e0bf808ff 100644 --- a/packages/egf/README.md +++ b/packages/egf/README.md @@ -80,7 +80,7 @@ are only available in NodeJS. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Begf%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Begf%5D+in%3Atitle) #### Feature ideas @@ -514,6 +514,17 @@ thi:umbrella Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-egf, + title = "@thi.ng/egf", + author = "Karsten Schmidt", + note = "https://thi.ng/egf", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/equiv/README.md b/packages/equiv/README.md index dbfe6a4012..eed527e15b 100644 --- a/packages/equiv/README.md +++ b/packages/equiv/README.md @@ -38,7 +38,7 @@ Supports: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bequiv%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bequiv%5D+in%3Atitle) ## Installation @@ -111,6 +111,17 @@ equiv(new Node([1,2,3], "foo"), new Node([1,2,3], "bar")); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-equiv, + title = "@thi.ng/equiv", + author = "Karsten Schmidt", + note = "https://thi.ng/equiv", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/errors/README.md b/packages/errors/README.md index d193882029..6d1d253691 100644 --- a/packages/errors/README.md +++ b/packages/errors/README.md @@ -28,7 +28,7 @@ Additional error types can be defined using **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Berrors%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Berrors%5D+in%3Atitle) ## Installation @@ -89,6 +89,17 @@ try { Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-errors, + title = "@thi.ng/errors", + author = "Karsten Schmidt", + note = "https://thi.ng/errors", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/fsm/README.md b/packages/fsm/README.md index c1de539c00..0b759ab8a3 100644 --- a/packages/fsm/README.md +++ b/packages/fsm/README.md @@ -33,7 +33,7 @@ case. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bfsm%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bfsm%5D+in%3Atitle) This package will be merged with and update the existing [@thi.ng/transducers-fsm](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers-fsm) @@ -134,6 +134,17 @@ transforming iterator of the FSM results. Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-fsm, + title = "@thi.ng/fsm", + author = "Karsten Schmidt", + note = "https://thi.ng/fsm", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-accel/README.md b/packages/geom-accel/README.md index 7cc1322866..94ebd0c694 100644 --- a/packages/geom-accel/README.md +++ b/packages/geom-accel/README.md @@ -38,7 +38,7 @@ Currently available: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-accel%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-accel%5D+in%3Atitle) ## Installation @@ -94,6 +94,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-accel, + title = "@thi.ng/geom-accel", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-accel", + year = 2013 +} +``` + ## License © 2013 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-api/README.md b/packages/geom-api/README.md index e19244acdb..8b54a7fe65 100644 --- a/packages/geom-api/README.md +++ b/packages/geom-api/README.md @@ -25,7 +25,7 @@ Shared type & interface declarations for [@thi.ng/geom](https://github.com/thi-n **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-api%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-api%5D+in%3Atitle) ## Installation @@ -58,6 +58,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-api, + title = "@thi.ng/geom-api", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-api", + year = 2013 +} +``` + ## License © 2013 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-arc/README.md b/packages/geom-arc/README.md index eded18185a..1e49b1fa23 100644 --- a/packages/geom-arc/README.md +++ b/packages/geom-arc/README.md @@ -25,7 +25,7 @@ This project is part of the **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-arc%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-arc%5D+in%3Atitle) ## Installation @@ -61,6 +61,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-arc, + title = "@thi.ng/geom-arc", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-arc", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-clip-line/README.md b/packages/geom-clip-line/README.md index bfc03263f4..3a7f291052 100644 --- a/packages/geom-clip-line/README.md +++ b/packages/geom-clip-line/README.md @@ -31,7 +31,7 @@ This package has been extracted from the former (now obsolete) **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-clip-line%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-clip-line%5D+in%3Atitle) ## Installation @@ -87,6 +87,17 @@ liangBarsky2( Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-clip-line, + title = "@thi.ng/geom-clip-line", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-clip-line", + year = 2013 +} +``` + ## License © 2013 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-clip-poly/README.md b/packages/geom-clip-poly/README.md index 44b5a247a0..589e40601e 100644 --- a/packages/geom-clip-poly/README.md +++ b/packages/geom-clip-poly/README.md @@ -31,7 +31,7 @@ This package has been extracted from the former (now obsolete) **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-clip-poly%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-clip-poly%5D+in%3Atitle) ## Installation @@ -66,6 +66,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-clip-poly, + title = "@thi.ng/geom-clip-poly", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-clip-poly", + year = 2013 +} +``` + ## License © 2013 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-closest-point/README.md b/packages/geom-closest-point/README.md index 82c946896e..05f0272188 100644 --- a/packages/geom-closest-point/README.md +++ b/packages/geom-closest-point/README.md @@ -30,7 +30,7 @@ Current implementations partially based on **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-closest-point%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-closest-point%5D+in%3Atitle) ## Installation @@ -87,6 +87,17 @@ A selection: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-closest-point, + title = "@thi.ng/geom-closest-point", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-closest-point", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-fuzz/README.md b/packages/geom-fuzz/README.md index f45d55adaf..2d35e7573b 100644 --- a/packages/geom-fuzz/README.md +++ b/packages/geom-fuzz/README.md @@ -29,7 +29,7 @@ Highly configurable, fuzzy line & polygon creation with presets and composable f **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-fuzz%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-fuzz%5D+in%3Atitle) ### Related packages @@ -87,6 +87,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-fuzz, + title = "@thi.ng/geom-fuzz", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-fuzz", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-hull/README.md b/packages/geom-hull/README.md index 8e42a82b6d..df11238471 100644 --- a/packages/geom-hull/README.md +++ b/packages/geom-hull/README.md @@ -29,7 +29,7 @@ Current implementation is partially based on Clojure version of **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-hull%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-hull%5D+in%3Atitle) ## Installation @@ -79,6 +79,17 @@ grahamScan2([[0, 0], [50, 10], [100, 0], [80, 50], [100, 100], [50, 90], [0, 100 Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-hull, + title = "@thi.ng/geom-hull", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-hull", + year = 2013 +} +``` + ## License © 2013 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-io-obj/README.md b/packages/geom-io-obj/README.md index efa434412a..28133748bd 100644 --- a/packages/geom-io-obj/README.md +++ b/packages/geom-io-obj/README.md @@ -46,7 +46,7 @@ Wavefront OBJ parser (& exporter soon). **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-io-obj%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-io-obj%5D+in%3Atitle) ## Installation @@ -157,6 +157,17 @@ benchmarking: parse w/ tessellation Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-io-obj, + title = "@thi.ng/geom-io-obj", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-io-obj", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-isec/README.md b/packages/geom-isec/README.md index c9dc64ab51..b2dc4b9ce7 100644 --- a/packages/geom-isec/README.md +++ b/packages/geom-isec/README.md @@ -48,7 +48,7 @@ Current implementations partially based on **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-isec%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-isec%5D+in%3Atitle) ## Installation @@ -92,6 +92,17 @@ res.type === isec.IntersectionType.INTERSECT Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-isec, + title = "@thi.ng/geom-isec", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-isec", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-isoline/README.md b/packages/geom-isoline/README.md index e68e1ef270..d14019d3eb 100644 --- a/packages/geom-isoline/README.md +++ b/packages/geom-isoline/README.md @@ -29,7 +29,7 @@ the Clojure version of **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-isoline%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-isoline%5D+in%3Atitle) ## Installation @@ -125,6 +125,17 @@ fs.writeFileSync("contours.svg", g.asSvg(doc)); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-isoline, + title = "@thi.ng/geom-isoline", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-isoline", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-poly-utils/README.md b/packages/geom-poly-utils/README.md index 1f28c9c58d..d8376f7095 100644 --- a/packages/geom-poly-utils/README.md +++ b/packages/geom-poly-utils/README.md @@ -39,7 +39,7 @@ Current implementations partially based on **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-poly-utils%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-poly-utils%5D+in%3Atitle) ## Installation @@ -75,6 +75,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-poly-utils, + title = "@thi.ng/geom-poly-utils", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-poly-utils", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-resample/README.md b/packages/geom-resample/README.md index ab93ec5829..1678cbd42d 100644 --- a/packages/geom-resample/README.md +++ b/packages/geom-resample/README.md @@ -33,7 +33,7 @@ Current implementations partially based on **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-resample%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-resample%5D+in%3Atitle) ## Installation @@ -97,6 +97,17 @@ simplify(pts, 0, true) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-resample, + title = "@thi.ng/geom-resample", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-resample", + year = 2013 +} +``` + ## License © 2013 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-splines/README.md b/packages/geom-splines/README.md index 7b85fb34a2..472e979a64 100644 --- a/packages/geom-splines/README.md +++ b/packages/geom-splines/README.md @@ -33,7 +33,7 @@ Current implementations partially based on **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-splines%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-splines%5D+in%3Atitle) ## Installation @@ -114,6 +114,17 @@ each vertex corner, taking into the convexity of each poly vertex. Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-splines, + title = "@thi.ng/geom-splines", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-splines", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-subdiv-curve/README.md b/packages/geom-subdiv-curve/README.md index 1c64ec7d28..d40b62bd27 100644 --- a/packages/geom-subdiv-curve/README.md +++ b/packages/geom-subdiv-curve/README.md @@ -42,7 +42,7 @@ Supplied / implemented subdivision schemes: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-subdiv-curve%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-subdiv-curve%5D+in%3Atitle) ## Installation @@ -80,6 +80,17 @@ gsc.subdivide([[0,0], [100,0], [100,100], [0,100]], gsc.SUBDIV_CHAIKIN_CLOSED, 4 Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-subdiv-curve, + title = "@thi.ng/geom-subdiv-curve", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-subdiv-curve", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-tessellate/README.md b/packages/geom-tessellate/README.md index 4afc36a06c..3ed98d8127 100644 --- a/packages/geom-tessellate/README.md +++ b/packages/geom-tessellate/README.md @@ -37,7 +37,7 @@ highly dependent on the concavities present. YMMV! **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-tessellate%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-tessellate%5D+in%3Atitle) ## Installation @@ -86,6 +86,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-tessellate, + title = "@thi.ng/geom-tessellate", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-tessellate", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom-voronoi/README.md b/packages/geom-voronoi/README.md index aef2201848..9ea12f7e3c 100644 --- a/packages/geom-voronoi/README.md +++ b/packages/geom-voronoi/README.md @@ -39,7 +39,7 @@ in ~850ms (Chrome 72, MBP 2016) **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom-voronoi%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom-voronoi%5D+in%3Atitle) ## Installation @@ -120,6 +120,17 @@ document.body.innerHtml = g.asSvg( Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom-voronoi, + title = "@thi.ng/geom-voronoi", + author = "Karsten Schmidt", + note = "https://thi.ng/geom-voronoi", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/geom/README.md b/packages/geom/README.md index 19139785ad..2066982aa2 100644 --- a/packages/geom/README.md +++ b/packages/geom/README.md @@ -59,7 +59,7 @@ themselves too): **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgeom%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom%5D+in%3Atitle) ## Installation @@ -141,6 +141,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-geom, + title = "@thi.ng/geom", + author = "Karsten Schmidt", + note = "https://thi.ng/geom", + year = 2013 +} +``` + ## License © 2013 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/gp/README.md b/packages/gp/README.md index c54f64cd80..89111ffab6 100644 --- a/packages/gp/README.md +++ b/packages/gp/README.md @@ -49,7 +49,7 @@ References: **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgp%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgp%5D+in%3Atitle) ### Related packages @@ -109,6 +109,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-gp, + title = "@thi.ng/gp", + author = "Karsten Schmidt", + note = "https://thi.ng/gp", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/grid-iterators/README.md b/packages/grid-iterators/README.md index 0bd631c967..680a977626 100644 --- a/packages/grid-iterators/README.md +++ b/packages/grid-iterators/README.md @@ -151,7 +151,7 @@ Additionally, the following shape iterators are available: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bgrid-iterators%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgrid-iterators%5D+in%3Atitle) ### Related packages @@ -215,6 +215,17 @@ import * as gi from "@thi.ng/grid-iterators"; Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-grid-iterators, + title = "@thi.ng/grid-iterators", + author = "Karsten Schmidt", + note = "https://thi.ng/grid-iterators", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hdiff/README.md b/packages/hdiff/README.md index 6b74e1a6e3..13c69b07a3 100644 --- a/packages/hdiff/README.md +++ b/packages/hdiff/README.md @@ -33,7 +33,7 @@ String diffing w/ hiccup output for further processing, e.g. with [@thi.ng/hdom] **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhdiff%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhdiff%5D+in%3Atitle) ## Installation @@ -119,6 +119,17 @@ Compiles a theme config into a complete CSS stylesheet string (using Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hdiff, + title = "@thi.ng/hdiff", + author = "Karsten Schmidt", + note = "https://thi.ng/hdiff", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hdom-canvas/README.md b/packages/hdom-canvas/README.md index c524a1722a..ea83dd44d4 100644 --- a/packages/hdom-canvas/README.md +++ b/packages/hdom-canvas/README.md @@ -43,7 +43,7 @@ API draw calls during the hdom update process / cycle. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhdom-canvas%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhdom-canvas%5D+in%3Atitle) ### BREAKING CHANGES 3.0.0 @@ -283,6 +283,17 @@ transformations. - Arthur Carabott ([@acarabott](https://github.com/acarabott)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hdom-canvas, + title = "@thi.ng/hdom-canvas", + author = "Karsten Schmidt and others", + note = "https://thi.ng/hdom-canvas", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hdom-components/README.md b/packages/hdom-components/README.md index da85f60609..1b0a28a915 100644 --- a/packages/hdom-components/README.md +++ b/packages/hdom-components/README.md @@ -41,7 +41,7 @@ components**. Feedback welcome! **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhdom-components%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhdom-components%5D+in%3Atitle) ## Installation @@ -117,6 +117,17 @@ A selection: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hdom-components, + title = "@thi.ng/hdom-components", + author = "Karsten Schmidt", + note = "https://thi.ng/hdom-components", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hdom-mock/README.md b/packages/hdom-mock/README.md index 418d2061b3..0665785373 100644 --- a/packages/hdom-mock/README.md +++ b/packages/hdom-mock/README.md @@ -30,7 +30,7 @@ custom target implementations. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhdom-mock%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhdom-mock%5D+in%3Atitle) ## Installation @@ -106,6 +106,17 @@ impl.root.children[0].toHiccup(); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hdom-mock, + title = "@thi.ng/hdom-mock", + author = "Karsten Schmidt", + note = "https://thi.ng/hdom-mock", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hdom/README.md b/packages/hdom/README.md index aeb94c016b..5c4162a7ab 100644 --- a/packages/hdom/README.md +++ b/packages/hdom/README.md @@ -100,7 +100,7 @@ Benefits: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhdom%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhdom%5D+in%3Atitle) ### Support packages @@ -1229,6 +1229,17 @@ Some stress test benchmarks are here: - Kevin Nolan ([@allforabit](https://github.com/allforabit)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hdom, + title = "@thi.ng/hdom", + author = "Karsten Schmidt and others", + note = "https://thi.ng/hdom", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/heaps/README.md b/packages/heaps/README.md index 631518e497..5cf76bd5c4 100644 --- a/packages/heaps/README.md +++ b/packages/heaps/README.md @@ -30,7 +30,7 @@ additional operations. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bheaps%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bheaps%5D+in%3Atitle) ## Installation @@ -88,6 +88,17 @@ h.push(24); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-heaps, + title = "@thi.ng/heaps", + author = "Karsten Schmidt", + note = "https://thi.ng/heaps", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hex/README.md b/packages/hex/README.md index dbcf9f8c91..a5601e8900 100644 --- a/packages/hex/README.md +++ b/packages/hex/README.md @@ -25,7 +25,7 @@ Hex string formatters for 4/8/16/24/32/48/64bit words. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhex%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhex%5D+in%3Atitle) ## Installation @@ -95,6 +95,17 @@ h.U32LE(BUF, 4) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hex, + title = "@thi.ng/hex", + author = "Karsten Schmidt", + note = "https://thi.ng/hex", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hiccup-canvas/README.md b/packages/hiccup-canvas/README.md index accc4b76d1..bcecf15c1d 100644 --- a/packages/hiccup-canvas/README.md +++ b/packages/hiccup-canvas/README.md @@ -65,7 +65,7 @@ implementations) and then translates these into canvas API draw calls. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhiccup-canvas%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhiccup-canvas%5D+in%3Atitle) ### Related packages @@ -490,6 +490,17 @@ package for creating different kinds of transformation matrices, e.g. Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hiccup-canvas, + title = "@thi.ng/hiccup-canvas", + author = "Karsten Schmidt", + note = "https://thi.ng/hiccup-canvas", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hiccup-carbon-icons/README.md b/packages/hiccup-carbon-icons/README.md index c0b3b244db..07cdc43c6f 100644 --- a/packages/hiccup-carbon-icons/README.md +++ b/packages/hiccup-carbon-icons/README.md @@ -43,7 +43,7 @@ code](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup-carbon-ico **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhiccup-carbon-icons%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhiccup-carbon-icons%5D+in%3Atitle) ## Installation @@ -144,6 +144,17 @@ yarn build Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hiccup-carbon-icons, + title = "@thi.ng/hiccup-carbon-icons", + author = "Karsten Schmidt", + note = "https://thi.ng/hiccup-carbon-icons", + year = 2018 +} +``` + ## License The copyright of the original icons is with IBM. The icons were published under diff --git a/packages/hiccup-css/README.md b/packages/hiccup-css/README.md index fc9671028b..de7ace0ef4 100644 --- a/packages/hiccup-css/README.md +++ b/packages/hiccup-css/README.md @@ -88,7 +88,7 @@ Clojure projects: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhiccup-css%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhiccup-css%5D+in%3Atitle) ## Installation @@ -650,6 +650,17 @@ const QUOTED_FNS = { Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hiccup-css, + title = "@thi.ng/hiccup-css", + author = "Karsten Schmidt", + note = "https://thi.ng/hiccup-css", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hiccup-html/README.md b/packages/hiccup-html/README.md index 0124b0aa32..7dc7b12311 100644 --- a/packages/hiccup-html/README.md +++ b/packages/hiccup-html/README.md @@ -154,7 +154,7 @@ thi.ng/umbrella eco system (most relevant: **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhiccup-html%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhiccup-html%5D+in%3Atitle) The current aim is not necessarily to have wrappers for *each* possible HTML5 element, but certainly to support the most commonly used ones. PRs @@ -339,6 +339,17 @@ const el = defElement("a", { b: 1 }); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hiccup-html, + title = "@thi.ng/hiccup-html", + author = "Karsten Schmidt", + note = "https://thi.ng/hiccup-html", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hiccup-markdown/README.md b/packages/hiccup-markdown/README.md index 625120c48b..01b5f63bbd 100644 --- a/packages/hiccup-markdown/README.md +++ b/packages/hiccup-markdown/README.md @@ -40,7 +40,7 @@ parser and an extensible Hiccup-to-Markdown converter. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhiccup-markdown%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhiccup-markdown%5D+in%3Atitle) ## Installation @@ -400,6 +400,17 @@ More info [here](http://thi.ng/hiccup-markdown). Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hiccup-markdown, + title = "@thi.ng/hiccup-markdown", + author = "Karsten Schmidt", + note = "https://thi.ng/hiccup-markdown", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hiccup-svg/README.md b/packages/hiccup-svg/README.md index 68ded07e31..7ffa88ad7f 100644 --- a/packages/hiccup-svg/README.md +++ b/packages/hiccup-svg/README.md @@ -115,7 +115,7 @@ therefore need to be complete, e.g. `{ rotate: "rotate(60)" }` **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhiccup-svg%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhiccup-svg%5D+in%3Atitle) ## Installation @@ -231,6 +231,17 @@ Result: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hiccup-svg, + title = "@thi.ng/hiccup-svg", + author = "Karsten Schmidt", + note = "https://thi.ng/hiccup-svg", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/hiccup/README.md b/packages/hiccup/README.md index 8d817285fb..e551cdb424 100644 --- a/packages/hiccup/README.md +++ b/packages/hiccup/README.md @@ -114,7 +114,7 @@ iterable **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bhiccup%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bhiccup%5D+in%3Atitle) ### Support packages @@ -648,6 +648,17 @@ considered](https://github.com/thi-ng/umbrella/blob/develop/packages/hiccup/src/ Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-hiccup, + title = "@thi.ng/hiccup", + author = "Karsten Schmidt", + note = "https://thi.ng/hiccup", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/idgen/README.md b/packages/idgen/README.md index 4f9f58182f..8c67663df5 100644 --- a/packages/idgen/README.md +++ b/packages/idgen/README.md @@ -47,7 +47,7 @@ be checked for validity via `.has(id)` (in constant time). **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bidgen%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bidgen%5D+in%3Atitle) ## Installation @@ -175,6 +175,17 @@ ids.next(); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-idgen, + title = "@thi.ng/idgen", + author = "Karsten Schmidt", + note = "https://thi.ng/idgen", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/iges/README.md b/packages/iges/README.md index 043f0d95a0..6bbaaf8b5c 100644 --- a/packages/iges/README.md +++ b/packages/iges/README.md @@ -30,7 +30,7 @@ applications (e.g. Rhino, Houdini, Fusion 360) **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Biges%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Biges%5D+in%3Atitle) ## Installation @@ -111,6 +111,17 @@ S0000002G0000003D0000002P0000003 T 1 Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-iges, + title = "@thi.ng/iges", + author = "Karsten Schmidt", + note = "https://thi.ng/iges", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/imgui/README.md b/packages/imgui/README.md index f797f92829..f7c02568e2 100644 --- a/packages/imgui/README.md +++ b/packages/imgui/README.md @@ -223,7 +223,7 @@ Some of the most obvious missing features: **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bimgui%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bimgui%5D+in%3Atitle) ## Installation @@ -278,6 +278,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-imgui, + title = "@thi.ng/imgui", + author = "Karsten Schmidt", + note = "https://thi.ng/imgui", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/interceptors/README.md b/packages/interceptors/README.md index bbc46f28bb..ab5120a8db 100644 --- a/packages/interceptors/README.md +++ b/packages/interceptors/README.md @@ -118,7 +118,7 @@ commented source code and examples for now: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Binterceptors%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Binterceptors%5D+in%3Atitle) ## Installation @@ -178,6 +178,17 @@ TODO - Logan Powell ([@loganpowell](https://github.com/loganpowell)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-interceptors, + title = "@thi.ng/interceptors", + author = "Karsten Schmidt and others", + note = "https://thi.ng/interceptors", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/intervals/README.md b/packages/intervals/README.md index 0f0e3fa934..0b5c3e26db 100644 --- a/packages/intervals/README.md +++ b/packages/intervals/README.md @@ -35,7 +35,7 @@ for details. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bintervals%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bintervals%5D+in%3Atitle) ## Installation @@ -156,6 +156,17 @@ interval("[0..1)").clamp(2, 1e-3) - [@oljeger](https://github.com/oljeger) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-intervals, + title = "@thi.ng/intervals", + author = "Karsten Schmidt and others", + note = "https://thi.ng/intervals", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/iterators/README.md b/packages/iterators/README.md index 76e18b5cf1..717e9651ae 100644 --- a/packages/iterators/README.md +++ b/packages/iterators/README.md @@ -81,7 +81,7 @@ more composable & efficient transducers via **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Biterators%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Biterators%5D+in%3Atitle) ## Installation @@ -1160,6 +1160,17 @@ ti.zip(ti.map((x)=> x.id, langs), langs) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-iterators, + title = "@thi.ng/iterators", + author = "Karsten Schmidt", + note = "https://thi.ng/iterators", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/layout/README.md b/packages/layout/README.md index fe9167fbca..33649e90f5 100644 --- a/packages/layout/README.md +++ b/packages/layout/README.md @@ -32,7 +32,7 @@ to define other layout types / implementations. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Blayout%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Blayout%5D+in%3Atitle) ## Installation @@ -129,6 +129,17 @@ twoCols.next([1, 2]); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-layout, + title = "@thi.ng/layout", + author = "Karsten Schmidt", + note = "https://thi.ng/layout", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/leb128/README.md b/packages/leb128/README.md index 8109461129..77bbc79843 100644 --- a/packages/leb128/README.md +++ b/packages/leb128/README.md @@ -43,7 +43,7 @@ References: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bleb128%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bleb128%5D+in%3Atitle) ## Installation @@ -121,6 +121,17 @@ yarn test Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-leb128, + title = "@thi.ng/leb128", + author = "Karsten Schmidt", + note = "https://thi.ng/leb128", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/lsys/README.md b/packages/lsys/README.md index 740ca0bc5c..ceac7928e2 100644 --- a/packages/lsys/README.md +++ b/packages/lsys/README.md @@ -44,7 +44,7 @@ Planned features: **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Blsys%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Blsys%5D+in%3Atitle) ### Blog posts @@ -248,6 +248,17 @@ rnd: IRandom; Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-lsys, + title = "@thi.ng/lsys", + author = "Karsten Schmidt", + note = "https://thi.ng/lsys", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/malloc/README.md b/packages/malloc/README.md index 26d9e4e964..f23efb98c9 100644 --- a/packages/malloc/README.md +++ b/packages/malloc/README.md @@ -124,7 +124,7 @@ capacity: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bmalloc%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bmalloc%5D+in%3Atitle) ## Installation @@ -348,6 +348,17 @@ allocating tiny arrays is slightly slower than the vanilla version... YMMV! - Bnaya Peretz ([@Bnaya](https://github.com/Bnaya)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-malloc, + title = "@thi.ng/malloc", + author = "Karsten Schmidt and others", + note = "https://thi.ng/malloc", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/math/README.md b/packages/math/README.md index 4924897f08..ef54087a82 100644 --- a/packages/math/README.md +++ b/packages/math/README.md @@ -35,7 +35,7 @@ Partially ported from Clojure version **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bmath%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bmath%5D+in%3Atitle) ## Installation @@ -92,6 +92,17 @@ TODO - [@nkint](https://github.com/nkint) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-math, + title = "@thi.ng/math", + author = "Karsten Schmidt and others", + note = "https://thi.ng/math", + year = 2013 +} +``` + ## License © 2013 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/matrices/README.md b/packages/matrices/README.md index 4dbf59d9be..40e7df8545 100644 --- a/packages/matrices/README.md +++ b/packages/matrices/README.md @@ -52,7 +52,7 @@ sensible). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bmatrices%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bmatrices%5D+in%3Atitle) ### Related packages @@ -212,6 +212,17 @@ A selection: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-matrices, + title = "@thi.ng/matrices", + author = "Karsten Schmidt", + note = "https://thi.ng/matrices", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/memoize/README.md b/packages/memoize/README.md index e1739219a7..04b03affef 100644 --- a/packages/memoize/README.md +++ b/packages/memoize/README.md @@ -40,7 +40,7 @@ based on different strategies. See doc strings for further details. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bmemoize%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bmemoize%5D+in%3Atitle) ## Installation @@ -148,6 +148,17 @@ dotProduct([1,2], [3,4]); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-memoize, + title = "@thi.ng/memoize", + author = "Karsten Schmidt", + note = "https://thi.ng/memoize", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/mime/README.md b/packages/mime/README.md index d3b54cd937..ee18e907b8 100644 --- a/packages/mime/README.md +++ b/packages/mime/README.md @@ -28,7 +28,7 @@ All MIME type mappings based on **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bmime%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bmime%5D+in%3Atitle) ## Installation @@ -93,6 +93,17 @@ preferredType("foo", "text/plain") Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-mime, + title = "@thi.ng/mime", + author = "Karsten Schmidt", + note = "https://thi.ng/mime", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/morton/README.md b/packages/morton/README.md index d73ccacd75..c673d5cc3b 100644 --- a/packages/morton/README.md +++ b/packages/morton/README.md @@ -36,7 +36,7 @@ References: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bmorton%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bmorton%5D+in%3Atitle) ### Related packages @@ -144,6 +144,17 @@ m.demuxScaled2(m.muxScaled2(0.25, 0.75)) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-morton, + title = "@thi.ng/morton", + author = "Karsten Schmidt", + note = "https://thi.ng/morton", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/oquery/README.md b/packages/oquery/README.md index 685b31e19c..672c8db731 100644 --- a/packages/oquery/README.md +++ b/packages/oquery/README.md @@ -42,7 +42,7 @@ See basic query examples below... **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Boquery%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Boquery%5D+in%3Atitle) ### Related packages @@ -62,7 +62,7 @@ yarn add @thi.ng/oquery ``` -Package sizes (gzipped, pre-treeshake): ESM: 847 bytes / CJS: 904 bytes / UMD: 964 bytes +Package sizes (gzipped, pre-treeshake): ESM: 1.15 KB / CJS: 1.20 KB / UMD: 1.23 KB ## Dependencies @@ -128,6 +128,17 @@ query(DB, (id) => id > "a" && id < "c", null, null) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-oquery, + title = "@thi.ng/oquery", + author = "Karsten Schmidt", + note = "https://thi.ng/oquery", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/parse/README.md b/packages/parse/README.md index e8c9456ff5..71fb2fb28d 100644 --- a/packages/parse/README.md +++ b/packages/parse/README.md @@ -60,7 +60,7 @@ Purely functional parser combinators & AST generation for generic inputs. **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bparse%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bparse%5D+in%3Atitle) ### Related packages @@ -550,6 +550,17 @@ console.log(stack); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-parse, + title = "@thi.ng/parse", + author = "Karsten Schmidt", + note = "https://thi.ng/parse", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/paths/README.md b/packages/paths/README.md index 80f000f161..8b352fed2b 100644 --- a/packages/paths/README.md +++ b/packages/paths/README.md @@ -39,7 +39,7 @@ Immutable, optimized and optionally typed path-based object property / array acc **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bpaths%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bpaths%5D+in%3Atitle) ## Breaking changes @@ -355,6 +355,17 @@ exists({ a: { b: { c: [null] } } }, "a.b.c.1"); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-paths, + title = "@thi.ng/paths", + author = "Karsten Schmidt", + note = "https://thi.ng/paths", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/pixel/README.md b/packages/pixel/README.md index fc481ed98d..2402664448 100644 --- a/packages/pixel/README.md +++ b/packages/pixel/README.md @@ -113,7 +113,7 @@ formats can be defined via `defFloatFormat()`. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bpixel%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bpixel%5D+in%3Atitle) ### Related packages @@ -230,6 +230,17 @@ TODO see examples & source comments for now Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-pixel, + title = "@thi.ng/pixel", + author = "Karsten Schmidt", + note = "https://thi.ng/pixel", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/pointfree-lang/README.md b/packages/pointfree-lang/README.md index 59de05fcb2..a6ad724b6c 100644 --- a/packages/pointfree-lang/README.md +++ b/packages/pointfree-lang/README.md @@ -64,7 +64,7 @@ an ES6 embedded DSL for concatenative programming: **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bpointfree-lang%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bpointfree-lang%5D+in%3Atitle) ## Installation @@ -709,6 +709,17 @@ pf.runU(src, {bingo: 42}, [43]); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-pointfree-lang, + title = "@thi.ng/pointfree-lang", + author = "Karsten Schmidt", + note = "https://thi.ng/pointfree-lang", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/pointfree/README.md b/packages/pointfree/README.md index b09b0015bc..51d79e9f70 100644 --- a/packages/pointfree/README.md +++ b/packages/pointfree/README.md @@ -186,7 +186,7 @@ non-linear control flow. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bpointfree%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bpointfree%5D+in%3Atitle) ### Support packages @@ -1166,6 +1166,17 @@ Like `run()`, but returns result environment. Syntax sugar for: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-pointfree, + title = "@thi.ng/pointfree", + author = "Karsten Schmidt", + note = "https://thi.ng/pointfree", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/poisson/README.md b/packages/poisson/README.md index 562f9c8f60..6fb60e9dcb 100644 --- a/packages/poisson/README.md +++ b/packages/poisson/README.md @@ -43,7 +43,7 @@ indices are supported as well... **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bpoisson%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bpoisson%5D+in%3Atitle) ### Related packages @@ -206,6 +206,17 @@ document.body.innerHTML = asSvg( Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-poisson, + title = "@thi.ng/poisson", + author = "Karsten Schmidt", + note = "https://thi.ng/poisson", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/porter-duff/README.md b/packages/porter-duff/README.md index 7e3694a245..1d857cc212 100644 --- a/packages/porter-duff/README.md +++ b/packages/porter-duff/README.md @@ -47,7 +47,7 @@ ints or RGBA float vectors. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bporter-duff%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bporter-duff%5D+in%3Atitle) ### Related packages @@ -187,6 +187,17 @@ Note: HTML Canvas `ImageData` is using non-premultiplied colors. Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-porter-duff, + title = "@thi.ng/porter-duff", + author = "Karsten Schmidt", + note = "https://thi.ng/porter-duff", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/prefixes/README.md b/packages/prefixes/README.md index 218bb333cb..bc30a37f32 100644 --- a/packages/prefixes/README.md +++ b/packages/prefixes/README.md @@ -26,7 +26,7 @@ This project is part of the **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bprefixes%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bprefixes%5D+in%3Atitle) ## Installation @@ -110,6 +110,17 @@ Serialized HTML/RDFa result: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-prefixes, + title = "@thi.ng/prefixes", + author = "Karsten Schmidt", + note = "https://thi.ng/prefixes", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/quad-edge/README.md b/packages/quad-edge/README.md index 52efb09368..22ef95b78b 100644 --- a/packages/quad-edge/README.md +++ b/packages/quad-edge/README.md @@ -39,7 +39,7 @@ Reference: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bquad-edge%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bquad-edge%5D+in%3Atitle) ### Related packages @@ -75,6 +75,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-quad-edge, + title = "@thi.ng/quad-edge", + author = "Karsten Schmidt", + note = "https://thi.ng/quad-edge", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/ramp/README.md b/packages/ramp/README.md index e61cdf9466..257d288f70 100644 --- a/packages/ramp/README.md +++ b/packages/ramp/README.md @@ -26,7 +26,7 @@ Parametric interpolated 1D lookup tables for remapping values. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bramp%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bramp%5D+in%3Atitle) ## Installation @@ -99,6 +99,17 @@ for(let i = 0; i <= 10; i++) { Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-ramp, + title = "@thi.ng/ramp", + author = "Karsten Schmidt", + note = "https://thi.ng/ramp", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/random/README.md b/packages/random/README.md index ac3024c7db..ec366258f9 100644 --- a/packages/random/README.md +++ b/packages/random/README.md @@ -41,7 +41,7 @@ Partially ported from C implementations taken from **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brandom%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brandom%5D+in%3Atitle) ## Installation @@ -121,6 +121,17 @@ rnd.gaussian() Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-random, + title = "@thi.ng/random", + author = "Karsten Schmidt", + note = "https://thi.ng/random", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/range-coder/README.md b/packages/range-coder/README.md index 43f0136a06..8077be57b8 100644 --- a/packages/range-coder/README.md +++ b/packages/range-coder/README.md @@ -27,7 +27,7 @@ by Joe Halliwell](https://www.winterwell.com/software/compressor.php). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brange-coder%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brange-coder%5D+in%3Atitle) ### Related packages @@ -82,6 +82,17 @@ dest = rc.decodeBytes(packed); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-range-coder, + title = "@thi.ng/range-coder", + author = "Karsten Schmidt", + note = "https://thi.ng/range-coder", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rdom-canvas/README.md b/packages/rdom-canvas/README.md index 1b808776cd..76f9674996 100644 --- a/packages/rdom-canvas/README.md +++ b/packages/rdom-canvas/README.md @@ -27,7 +27,7 @@ This project is part of the **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brdom-canvas%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brdom-canvas%5D+in%3Atitle) ### Related packages @@ -85,6 +85,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rdom-canvas, + title = "@thi.ng/rdom-canvas", + author = "Karsten Schmidt", + note = "https://thi.ng/rdom-canvas", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rdom-components/README.md b/packages/rdom-components/README.md index 502977e02f..cec1d413a9 100644 --- a/packages/rdom-components/README.md +++ b/packages/rdom-components/README.md @@ -34,7 +34,7 @@ Currently, this package provides: **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brdom-components%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brdom-components%5D+in%3Atitle) ## Installation @@ -84,6 +84,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rdom-components, + title = "@thi.ng/rdom-components", + author = "Karsten Schmidt", + note = "https://thi.ng/rdom-components", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rdom/README.md b/packages/rdom/README.md index 5df716c01b..87b4c69cf1 100644 --- a/packages/rdom/README.md +++ b/packages/rdom/README.md @@ -29,7 +29,7 @@ Lightweight, reactive, VDOM-less UI/DOM components with async lifecycle and [@th **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brdom%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brdom%5D+in%3Atitle) #### HIC SUNT DRACONES @@ -74,7 +74,7 @@ yarn add @thi.ng/rdom ``` -Package sizes (gzipped, pre-treeshake): ESM: 3.73 KB / CJS: 3.87 KB / UMD: 3.85 KB +Package sizes (gzipped, pre-treeshake): ESM: 3.76 KB / CJS: 3.90 KB / UMD: 3.88 KB ## Dependencies @@ -158,6 +158,17 @@ $compile([ Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rdom, + title = "@thi.ng/rdom", + author = "Karsten Schmidt", + note = "https://thi.ng/rdom", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/resolve-map/README.md b/packages/resolve-map/README.md index fce361e33c..64495d2c77 100644 --- a/packages/resolve-map/README.md +++ b/packages/resolve-map/README.md @@ -44,7 +44,7 @@ supported. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bresolve-map%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bresolve-map%5D+in%3Atitle) ## Installation @@ -286,6 +286,17 @@ res.e(2); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-resolve-map, + title = "@thi.ng/resolve-map", + author = "Karsten Schmidt", + note = "https://thi.ng/resolve-map", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rle-pack/README.md b/packages/rle-pack/README.md index b3e14dd4ed..ac1866f15d 100644 --- a/packages/rle-pack/README.md +++ b/packages/rle-pack/README.md @@ -53,7 +53,7 @@ Then per value: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brle-pack%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brle-pack%5D+in%3Atitle) ### Related packages @@ -111,6 +111,17 @@ unpacked = new Uint8Array(decode(alt)); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rle-pack, + title = "@thi.ng/rle-pack", + author = "Karsten Schmidt", + note = "https://thi.ng/rle-pack", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/router/README.md b/packages/router/README.md index 4a63cf6d47..76ed1780ad 100644 --- a/packages/router/README.md +++ b/packages/router/README.md @@ -39,7 +39,7 @@ Partially based on the Clojure implementation in **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brouter%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brouter%5D+in%3Atitle) ## Installation @@ -177,6 +177,17 @@ code](https://github.com/thi-ng/umbrella/blob/develop/packages/router/src/api.ts Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-router, + title = "@thi.ng/router", + author = "Karsten Schmidt", + note = "https://thi.ng/router", + year = 2014 +} +``` + ## License © 2014 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rstream-csp/README.md b/packages/rstream-csp/README.md index 55bd3c1676..b7f12a3561 100644 --- a/packages/rstream-csp/README.md +++ b/packages/rstream-csp/README.md @@ -29,7 +29,7 @@ and synchronous stream subscriptions/transformations of **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brstream-csp%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brstream-csp%5D+in%3Atitle) ### Related packages @@ -89,6 +89,17 @@ stream.subscribe(rs.trace("tentimes"), tx.map(x => x * 10)); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rstream-csp, + title = "@thi.ng/rstream-csp", + author = "Karsten Schmidt", + note = "https://thi.ng/rstream-csp", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rstream-dot/README.md b/packages/rstream-dot/README.md index a1c8d026fb..fd67d31a4f 100644 --- a/packages/rstream-dot/README.md +++ b/packages/rstream-dot/README.md @@ -26,7 +26,7 @@ Graphviz DOT conversion of [@thi.ng/rstream](https://github.com/thi-ng/umbrella/ **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brstream-dot%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brstream-dot%5D+in%3Atitle) ### Related packages @@ -112,6 +112,17 @@ This will generate this diagram: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rstream-dot, + title = "@thi.ng/rstream-dot", + author = "Karsten Schmidt", + note = "https://thi.ng/rstream-dot", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rstream-gestures/README.md b/packages/rstream-gestures/README.md index 0caa313434..ae9d292eb3 100644 --- a/packages/rstream-gestures/README.md +++ b/packages/rstream-gestures/README.md @@ -33,7 +33,7 @@ Unified mouse, mouse wheel & multi-touch event stream abstraction. This is a sup **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brstream-gestures%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brstream-gestures%5D+in%3Atitle) ### Breaking changes @@ -184,6 +184,17 @@ gestures.subscribe( - Arthur Carabott ([@acarabott](https://github.com/acarabott)) - Matei Adriel ([@Mateiadrielrafael](https://github.com/Mateiadrielrafael)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rstream-gestures, + title = "@thi.ng/rstream-gestures", + author = "Karsten Schmidt and others", + note = "https://thi.ng/rstream-gestures", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rstream-graph/README.md b/packages/rstream-graph/README.md index eda66da10e..30d316c686 100644 --- a/packages/rstream-graph/README.md +++ b/packages/rstream-graph/README.md @@ -40,7 +40,7 @@ these and keep any cycles async). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brstream-graph%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brstream-graph%5D+in%3Atitle) ## Installation @@ -221,6 +221,17 @@ further details. Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rstream-graph, + title = "@thi.ng/rstream-graph", + author = "Karsten Schmidt", + note = "https://thi.ng/rstream-graph", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rstream-log-file/README.md b/packages/rstream-log-file/README.md index d2cfddeb2a..7f5007a908 100644 --- a/packages/rstream-log-file/README.md +++ b/packages/rstream-log-file/README.md @@ -25,7 +25,7 @@ File output handler for structured, multilevel & hierarchical loggers based on [ **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brstream-log-file%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brstream-log-file%5D+in%3Atitle) ## Installation @@ -76,6 +76,17 @@ writer.done(); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rstream-log-file, + title = "@thi.ng/rstream-log-file", + author = "Karsten Schmidt", + note = "https://thi.ng/rstream-log-file", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rstream-log/README.md b/packages/rstream-log/README.md index 60f537d400..c22b0cfb52 100644 --- a/packages/rstream-log/README.md +++ b/packages/rstream-log/README.md @@ -36,7 +36,7 @@ filtering. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brstream-log%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brstream-log%5D+in%3Atitle) ### Support packages @@ -110,6 +110,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rstream-log, + title = "@thi.ng/rstream-log", + author = "Karsten Schmidt", + note = "https://thi.ng/rstream-log", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rstream-query/README.md b/packages/rstream-query/README.md index f5f97350c1..145eec6284 100644 --- a/packages/rstream-query/README.md +++ b/packages/rstream-query/README.md @@ -55,7 +55,7 @@ feature is currently WIP). **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brstream-query%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brstream-query%5D+in%3Atitle) This project is currently still in early development and intended as a continuation of the Clojure based [thi.ng/fabric](http://thi.ng/fabric), @@ -225,6 +225,17 @@ The source code for the above example is Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rstream-query, + title = "@thi.ng/rstream-query", + author = "Karsten Schmidt", + note = "https://thi.ng/rstream-query", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/rstream/README.md b/packages/rstream/README.md index cac7392beb..cda86e2284 100644 --- a/packages/rstream/README.md +++ b/packages/rstream/README.md @@ -101,7 +101,7 @@ programming: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Brstream%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Brstream%5D+in%3Atitle) ### Breaking changes in 5.0.0 @@ -814,6 +814,17 @@ Create value stream from worker messages. - André Wachter ([@andrew8er](https://github.com/andrew8er)) - Gavin Cannizzaro ([@gavinpc-mindgrub](https://github.com/gavinpc-mindgrub)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-rstream, + title = "@thi.ng/rstream", + author = "Karsten Schmidt and others", + note = "https://thi.ng/rstream", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/sax/README.md b/packages/sax/README.md index 3211a9221d..2864460e5f 100644 --- a/packages/sax/README.md +++ b/packages/sax/README.md @@ -48,7 +48,7 @@ well (see SVG parsing example further below). The choice is yours! **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bsax%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bsax%5D+in%3Atitle) ### Related packages @@ -338,6 +338,17 @@ The `type` key in each emitted result object is a TypeScript enum with the follo Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-sax, + title = "@thi.ng/sax", + author = "Karsten Schmidt", + note = "https://thi.ng/sax", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/scenegraph/README.md b/packages/scenegraph/README.md index 45dbdd7104..fa86205f4b 100644 --- a/packages/scenegraph/README.md +++ b/packages/scenegraph/README.md @@ -26,7 +26,7 @@ Extensible 2D/3D scene graph with [@thi.ng/hiccup-canvas](https://github.com/thi **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bscenegraph%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bscenegraph%5D+in%3Atitle) ## Installation @@ -75,6 +75,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-scenegraph, + title = "@thi.ng/scenegraph", + author = "Karsten Schmidt", + note = "https://thi.ng/scenegraph", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/seq/README.md b/packages/seq/README.md index 22434872ae..65b0f31a5b 100644 --- a/packages/seq/README.md +++ b/packages/seq/README.md @@ -38,7 +38,7 @@ the remaining values at their own pace. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bseq%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bseq%5D+in%3Atitle) ## Installation @@ -208,6 +208,17 @@ fib().next().next().next().next().first() Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-seq, + title = "@thi.ng/seq", + author = "Karsten Schmidt", + note = "https://thi.ng/seq", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/sexpr/README.md b/packages/sexpr/README.md index 7dbb53e266..d06d6fd138 100644 --- a/packages/sexpr/README.md +++ b/packages/sexpr/README.md @@ -42,7 +42,7 @@ Everything else is parsed as is, i.e. as symbol. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bsexpr%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bsexpr%5D+in%3Atitle) ## Installation @@ -282,6 +282,17 @@ parse(``, syntax); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-sexpr, + title = "@thi.ng/sexpr", + author = "Karsten Schmidt", + note = "https://thi.ng/sexpr", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/shader-ast-glsl/README.md b/packages/shader-ast-glsl/README.md index 4f33de184f..cec5c8e118 100644 --- a/packages/shader-ast-glsl/README.md +++ b/packages/shader-ast-glsl/README.md @@ -33,7 +33,7 @@ This package is also used for shader assembly by **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bshader-ast-glsl%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bshader-ast-glsl%5D+in%3Atitle) ### Related packages @@ -134,6 +134,17 @@ fragColor = vec4(color, 1.0); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-shader-ast-glsl, + title = "@thi.ng/shader-ast-glsl", + author = "Karsten Schmidt", + note = "https://thi.ng/shader-ast-glsl", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/shader-ast-js/README.md b/packages/shader-ast-js/README.md index 3a6da2bd89..35906b2dbb 100644 --- a/packages/shader-ast-js/README.md +++ b/packages/shader-ast-js/README.md @@ -48,7 +48,7 @@ which altogether provide ~750 optimized vector/matrix functions. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bshader-ast-js%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bshader-ast-js%5D+in%3Atitle) ### Related packages @@ -133,6 +133,17 @@ Module.hello(10); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-shader-ast-js, + title = "@thi.ng/shader-ast-js", + author = "Karsten Schmidt", + note = "https://thi.ng/shader-ast-js", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/shader-ast-stdlib/README.md b/packages/shader-ast-stdlib/README.md index 7b5f8f17ea..db9d1465fa 100644 --- a/packages/shader-ast-stdlib/README.md +++ b/packages/shader-ast-stdlib/README.md @@ -68,7 +68,7 @@ Reference: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bshader-ast-stdlib%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bshader-ast-stdlib%5D+in%3Atitle) ### Related packages @@ -453,6 +453,17 @@ for reference. Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-shader-ast-stdlib, + title = "@thi.ng/shader-ast-stdlib", + author = "Karsten Schmidt", + note = "https://thi.ng/shader-ast-stdlib", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/shader-ast/README.md b/packages/shader-ast/README.md index fcfd9b7e01..e241153666 100644 --- a/packages/shader-ast/README.md +++ b/packages/shader-ast/README.md @@ -156,7 +156,7 @@ status. The TL;DR list... **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bshader-ast%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bshader-ast%5D+in%3Atitle) ### Support packages @@ -590,6 +590,17 @@ constantFolding(ast) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-shader-ast, + title = "@thi.ng/shader-ast", + author = "Karsten Schmidt", + note = "https://thi.ng/shader-ast", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/simd/README.md b/packages/simd/README.md index f85f1ec0c9..070121878d 100644 --- a/packages/simd/README.md +++ b/packages/simd/README.md @@ -82,7 +82,7 @@ for documentation about the exposed TS/JS API... **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bsimd%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bsimd%5D+in%3Atitle) The [WebAssembly SIMD spec](https://github.com/WebAssembly/simd) is still WIP and (at the time of writing) only partially implemented and @@ -196,6 +196,17 @@ points Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-simd, + title = "@thi.ng/simd", + author = "Karsten Schmidt", + note = "https://thi.ng/simd", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/soa/README.md b/packages/soa/README.md index 5796895c06..dabe0fe120 100644 --- a/packages/soa/README.md +++ b/packages/soa/README.md @@ -27,7 +27,7 @@ SOA & AOS memory mapped structured views with optional & extensible serializatio **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bsoa%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bsoa%5D+in%3Atitle) See tests for usage. This package might be merged with and/or superseded by @@ -87,6 +87,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-soa, + title = "@thi.ng/soa", + author = "Karsten Schmidt", + note = "https://thi.ng/soa", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/sparse/README.md b/packages/sparse/README.md index dcd9864b84..2578865623 100644 --- a/packages/sparse/README.md +++ b/packages/sparse/README.md @@ -25,7 +25,7 @@ Sparse vector & matrix implementations. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bsparse%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bsparse%5D+in%3Atitle) ## Installation @@ -58,6 +58,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-sparse, + title = "@thi.ng/sparse", + author = "Karsten Schmidt", + note = "https://thi.ng/sparse", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/strings/README.md b/packages/strings/README.md index 33d56a62b8..f2e6eb2e79 100644 --- a/packages/strings/README.md +++ b/packages/strings/README.md @@ -36,7 +36,7 @@ Partially based on Clojure version of [thi.ng/strf](http://thi.ng/strf). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bstrings%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bstrings%5D+in%3Atitle) ## Installation @@ -161,6 +161,17 @@ fmt("eur", 1.2345, 0.25) Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-strings, + title = "@thi.ng/strings", + author = "Karsten Schmidt", + note = "https://thi.ng/strings", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/system/README.md b/packages/system/README.md index bfb962eb26..9f2f1cb92c 100644 --- a/packages/system/README.md +++ b/packages/system/README.md @@ -33,7 +33,7 @@ Clojure/ClojureScript. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bsystem%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bsystem%5D+in%3Atitle) ## Installation @@ -212,6 +212,17 @@ Resulting visualization: - Kevin Nolan ([@allforabit](https://github.com/allforabit)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-system, + title = "@thi.ng/system", + author = "Karsten Schmidt and others", + note = "https://thi.ng/system", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/text-canvas/README.md b/packages/text-canvas/README.md index 35acafbf27..62cd222ace 100644 --- a/packages/text-canvas/README.md +++ b/packages/text-canvas/README.md @@ -40,7 +40,7 @@ Text based canvas, drawing, tables with arbitrary formatting (incl. ANSI/HTML). **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Btext-canvas%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Btext-canvas%5D+in%3Atitle) ## Installation @@ -433,6 +433,17 @@ setInterval(() => { Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-text-canvas, + title = "@thi.ng/text-canvas", + author = "Karsten Schmidt", + note = "https://thi.ng/text-canvas", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/transducers-binary/README.md b/packages/transducers-binary/README.md index edfd3ffd3c..d16e5678c8 100644 --- a/packages/transducers-binary/README.md +++ b/packages/transducers-binary/README.md @@ -39,7 +39,7 @@ iterable for direct use. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Btransducers-binary%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Btransducers-binary%5D+in%3Atitle) ### Related packages @@ -298,6 +298,17 @@ tx.transduce(tx.comp(txb.base64Decode(), txb.utf8Decode()), tx.str(), buf); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-transducers-binary, + title = "@thi.ng/transducers-binary", + author = "Karsten Schmidt", + note = "https://thi.ng/transducers-binary", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/transducers-fsm/README.md b/packages/transducers-fsm/README.md index deae8e15f8..ea711cac6d 100644 --- a/packages/transducers-fsm/README.md +++ b/packages/transducers-fsm/README.md @@ -35,7 +35,7 @@ transformation pipeline. **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Btransducers-fsm%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Btransducers-fsm%5D+in%3Atitle) This package might be merged with (or deprecated by) the newer [@thi.ng/fsm](https://github.com/thi-ng/umbrella/tree/develop/packages/fsm) @@ -195,6 +195,17 @@ to the configured `terminate` state, processing is terminated (by calling Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-transducers-fsm, + title = "@thi.ng/transducers-fsm", + author = "Karsten Schmidt", + note = "https://thi.ng/transducers-fsm", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/transducers-hdom/README.md b/packages/transducers-hdom/README.md index 4401c6104d..6f189afa5c 100644 --- a/packages/transducers-hdom/README.md +++ b/packages/transducers-hdom/README.md @@ -55,7 +55,7 @@ Please also see the following hdom references for further details: **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Btransducers-hdom%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Btransducers-hdom%5D+in%3Atitle) ### Related packages @@ -157,6 +157,17 @@ clickStream.next(0); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-transducers-hdom, + title = "@thi.ng/transducers-hdom", + author = "Karsten Schmidt", + note = "https://thi.ng/transducers-hdom", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/transducers-patch/README.md b/packages/transducers-patch/README.md index 8cb0e762a3..c90a7bb98e 100644 --- a/packages/transducers-patch/README.md +++ b/packages/transducers-patch/README.md @@ -32,7 +32,7 @@ state update. By default all edits are performed non-destructively, but **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Btransducers-patch%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Btransducers-patch%5D+in%3Atitle) ## Installation @@ -165,6 +165,17 @@ state.next([Patch.DELETE, "x"]); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-transducers-patch, + title = "@thi.ng/transducers-patch", + author = "Karsten Schmidt", + note = "https://thi.ng/transducers-patch", + year = 2020 +} +``` + ## License © 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/transducers-stats/README.md b/packages/transducers-stats/README.md index 180793631d..f0956afe30 100644 --- a/packages/transducers-stats/README.md +++ b/packages/transducers-stats/README.md @@ -56,7 +56,7 @@ transforming ES6 iterator (generator) instead of a transducer. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Btransducers-stats%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Btransducers-stats%5D+in%3Atitle) ## Installation @@ -140,6 +140,17 @@ tx.transduce( Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-transducers-stats, + title = "@thi.ng/transducers-stats", + author = "Karsten Schmidt", + note = "https://thi.ng/transducers-stats", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/transducers/README.md b/packages/transducers/README.md index f7bda2e972..9c7f71970b 100644 --- a/packages/transducers/README.md +++ b/packages/transducers/README.md @@ -85,7 +85,7 @@ will return a reduced result of the given input iterable. **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Btransducers%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Btransducers%5D+in%3Atitle) ### 7.0.0 release @@ -982,6 +982,17 @@ and return a reduced result (as if it would be called via `reduce()`). - Alberto ([@nkint](https://github.com/nkint)) - Gavin Cannizzaro ([@gavinpc-mindgrub](https://github.com/gavinpc-mindgrub)) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-transducers, + title = "@thi.ng/transducers", + author = "Karsten Schmidt and others", + note = "https://thi.ng/transducers", + year = 2016 +} +``` + ## License © 2016 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/unionstruct/README.md b/packages/unionstruct/README.md index 43d776e4c8..c20796f038 100644 --- a/packages/unionstruct/README.md +++ b/packages/unionstruct/README.md @@ -44,7 +44,7 @@ Currently does not support array fields (incl. strings). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bunionstruct%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bunionstruct%5D+in%3Atitle) ## Installation @@ -243,6 +243,17 @@ bitfields.__offsets Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-unionstruct, + title = "@thi.ng/unionstruct", + author = "Karsten Schmidt", + note = "https://thi.ng/unionstruct", + year = 2017 +} +``` + ## License © 2017 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/vclock/README.md b/packages/vclock/README.md index 820ecb6e32..3d1e990b79 100644 --- a/packages/vclock/README.md +++ b/packages/vclock/README.md @@ -64,7 +64,7 @@ References: **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bvclock%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bvclock%5D+in%3Atitle) ## Installation @@ -96,6 +96,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-vclock, + title = "@thi.ng/vclock", + author = "Karsten Schmidt", + note = "https://thi.ng/vclock", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/vector-pools/README.md b/packages/vector-pools/README.md index c1b6993547..4ab2def645 100644 --- a/packages/vector-pools/README.md +++ b/packages/vector-pools/README.md @@ -39,7 +39,7 @@ region of a WebGL or WASM memory buffer. **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bvector-pools%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bvector-pools%5D+in%3Atitle) This package might be merged with and/or superseded by [@thi.ng/ecs](https://github.com/thi-ng/umbrella/tree/develop/packages/ecs) @@ -271,6 +271,17 @@ const geo = new vp.AttribPool( Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-vector-pools, + title = "@thi.ng/vector-pools", + author = "Karsten Schmidt", + note = "https://thi.ng/vector-pools", + year = 2018 +} +``` + ## License © 2018 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/vectors/README.md b/packages/vectors/README.md index d3fd5e487e..74c67215ce 100644 --- a/packages/vectors/README.md +++ b/packages/vectors/README.md @@ -115,7 +115,7 @@ Partially ported from [thi.ng/geom-clj](http://thi.ng/geom-clj) (Clojure) and **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bvectors%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bvectors%5D+in%3Atitle) ### Breaking changes in v3.0.0 @@ -637,6 +637,17 @@ For more information about the code generator see: Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-vectors, + title = "@thi.ng/vectors", + author = "Karsten Schmidt", + note = "https://thi.ng/vectors", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/viz/README.md b/packages/viz/README.md index 6eb4be6791..0a03b60059 100644 --- a/packages/viz/README.md +++ b/packages/viz/README.md @@ -56,7 +56,7 @@ For reference & what to expect (links to the Clojure version): **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bviz%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bviz%5D+in%3Atitle) ## Installation @@ -94,6 +94,28 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-viz, + title = "@thi.ng/viz", + author = "Karsten Schmidt", + note = "https://thi.ng/viz", + year = 2014 +} +``` + +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-viz, + title = "@thi.ng/viz", + author = "Karsten Schmidt", + note = "https://thi.ng/viz", + year = 2014 +} +``` + ## License © 2014 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/webgl-msdf/README.md b/packages/webgl-msdf/README.md index 33aee87a98..9e0777e9dd 100644 --- a/packages/webgl-msdf/README.md +++ b/packages/webgl-msdf/README.md @@ -39,7 +39,7 @@ McCurdy's](https://msdf-bmfont.donmccurdy.com/). **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bwebgl-msdf%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bwebgl-msdf%5D+in%3Atitle) ## Installation @@ -88,6 +88,17 @@ TODO Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-webgl-msdf, + title = "@thi.ng/webgl-msdf", + author = "Karsten Schmidt", + note = "https://thi.ng/webgl-msdf", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/webgl-shadertoy/README.md b/packages/webgl-shadertoy/README.md index e6c1d16e54..8e8d54b905 100644 --- a/packages/webgl-shadertoy/README.md +++ b/packages/webgl-shadertoy/README.md @@ -27,7 +27,7 @@ Basic WebGL scaffolding for running interactive fragment shaders via [@thi.ng/sh **ALPHA** - bleeding edge / work-in-progress -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bwebgl-shadertoy%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bwebgl-shadertoy%5D+in%3Atitle) ### Related packages @@ -143,6 +143,17 @@ toy.start(); Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-webgl-shadertoy, + title = "@thi.ng/webgl-shadertoy", + author = "Karsten Schmidt", + note = "https://thi.ng/webgl-shadertoy", + year = 2019 +} +``` + ## License © 2019 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/webgl/README.md b/packages/webgl/README.md index 592610016f..fd664b9928 100644 --- a/packages/webgl/README.md +++ b/packages/webgl/README.md @@ -59,7 +59,7 @@ Largely declarative WebGL 1.0 / 2.0 abstraction layer, partially ported **BETA** - possibly breaking changes forthcoming -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bwebgl%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bwebgl%5D+in%3Atitle) ### Support packages @@ -153,6 +153,17 @@ TODO - [@nkint](https://github.com/nkint) - [@stwind](https://github.com/stwind) +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-webgl, + title = "@thi.ng/webgl", + author = "Karsten Schmidt and others", + note = "https://thi.ng/webgl", + year = 2014 +} +``` + ## License © 2014 - 2020 Karsten Schmidt // Apache Software License 2.0 diff --git a/packages/zipper/README.md b/packages/zipper/README.md index 0bbdcb161a..eed08f270f 100644 --- a/packages/zipper/README.md +++ b/packages/zipper/README.md @@ -38,7 +38,7 @@ Reference: https://en.wikipedia.org/wiki/Zipper_(data_structure) **STABLE** - used in production -[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=is%3Aissue+is%3Aopen+%5Bzipper%5D) +[Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bzipper%5D+in%3Atitle) ### Related packages @@ -147,6 +147,17 @@ total: 4616ms, mean: 0.4616ms, runs: 10000 Karsten Schmidt +If this project contributes to an academic publication, please cite it as: + +```bibtex +@misc{thing-zipper, + title = "@thi.ng/zipper", + author = "Karsten Schmidt", + note = "https://thi.ng/zipper", + year = 2015 +} +``` + ## License © 2015 - 2020 Karsten Schmidt // Apache Software License 2.0 From c186f224ec197e43249b7b042a0ecfdf560f8c8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Dec 2020 18:18:08 +0000 Subject: [PATCH 10/71] build(deps): bump highlight.js from 10.4.0 to 10.4.1 Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.4.0 to 10.4.1. - [Release notes](https://github.com/highlightjs/highlight.js/releases) - [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md) - [Commits](https://github.com/highlightjs/highlight.js/compare/10.4.0...10.4.1) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8dcde515fd..bc50a9e9c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5023,9 +5023,9 @@ hex-color-regex@^1.1.0: integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== highlight.js@^10.2.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.0.tgz#ef3ce475e5dfa7a48484260b49ea242ddab823a0" - integrity sha512-EfrUGcQ63oLJbj0J0RI9ebX6TAITbsDBLbsjr881L/X5fMO9+oadKzEF21C7R3ULKG6Gv3uoab2HiqVJa/4+oA== + version "10.4.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0" + integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg== hmac-drbg@^1.0.0: version "1.0.1" From 90f4ee74dd42d2a02fe6eb98e6a058b2a042ed8f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 02:44:18 +0000 Subject: [PATCH 11/71] refactor(oquery): update QueryOpts and defaults - rename full => partial (flip conditions) - rename inspect => cwise - update tests --- packages/oquery/src/api.ts | 22 +++++---- packages/oquery/src/query.ts | 86 +++++++++++++++++------------------ packages/oquery/test/index.ts | 12 ++--- 3 files changed, 61 insertions(+), 59 deletions(-) diff --git a/packages/oquery/src/api.ts b/packages/oquery/src/api.ts index 5ef50428d2..f18ec19f38 100644 --- a/packages/oquery/src/api.ts +++ b/packages/oquery/src/api.ts @@ -101,40 +101,42 @@ export interface QueryFn { export interface QueryOpts { /** - * If true, the full object is included in the solution as soon as any of - * its P(redicate)-O(bject) terms matches. If false, only successfully + * If false, an entire object is included in the solution as soon as any of + * its P(redicate)-O(bject) terms matches. If true, only successfully * matched property values will be included for each result. * * @example * ```ts * const DB = { a: { id: 1, name: "alice" }, b: { name: "bob" } }; * - * defQuery({ full: true })(DB, null, "id", 1) + * defQuery({ partial: false })(DB, null, "id", 1) * // { a: { id: 1, name: "alice" } } * - * defQuery({ full: false })(DB, null, "id", 1) + * defQuery({ partial: true })(DB, null, "id", 1) * // { a: { id: 1 } } * ``` * - * @defaultValue true + * @defaultValue false */ - full: boolean; + partial: boolean; /** * If true (default), any array values in the target object's O(bject) - * position will be inspected elementwise rather than matched as array value + * position will be matched componentwise rather than matched as array value * themselves. * * @example * ```ts * const DB = { a: { knows: ["b","c"] }, b: { knows: ["a","c"] }}; - * defQuery({ inspect: true })(DB, null, "knows", "b") + * defQuery({ cwise: true })(DB, null, "knows", "b") * // { a: { knows: ["b","c"] } } * - * defQuery({ inspect: false })(DB, null, "knows", (x) => x.includes("b")) + * defQuery({ cwise: false })(DB, null, "knows", (x) => x.includes("b")) * // { a: { knows: ["b","c"] } } * ``` + * + * @defaultValue true */ - inspect: boolean; + cwise: boolean; /** * Equality predicate applied for matching literals in O(bject) position. * diff --git a/packages/oquery/src/query.ts b/packages/oquery/src/query.ts index b7e5421a1f..a93508dad7 100644 --- a/packages/oquery/src/query.ts +++ b/packages/oquery/src/query.ts @@ -46,7 +46,7 @@ const match = (o: any, val: any, opts: QueryOpts) => { const pred = >( (isFunction(o) ? o : ($: any) => opts.equiv(o, $)) ); - return opts.inspect && isArray(val) ? val.some(pred) : pred(val); + return opts.cwise && isArray(val) ? val.some(pred) : pred(val); } return false; }; @@ -61,7 +61,7 @@ const collect = ( ) => { if (val != null) { const pred = isFunction(o) ? o : ($: any) => opts.equiv(o, $); - if (opts.inspect && isArray(val)) { + if (opts.cwise && isArray(val)) { val = val.filter(pred); val.length && addTriple(acc, s, p, val); } else if (pred(val)) { @@ -80,17 +80,17 @@ const collectSP = ( o: any, opts: QueryOpts ) => { - if (opts.full) { + if (opts.partial) { + for (let $p in sval) { + (p)($p) && collect(res, s, $p, o, sval[$p], opts); + } + } else { for (let $p in sval) { if ((p)($p) && match(o, sval[$p], opts)) { collectFull(res, s, sval); return; } } - } else { - for (let $p in sval) { - (p)($p) && collect(res, s, $p, o, sval[$p], opts); - } } }; @@ -101,27 +101,27 @@ const collectSO = ( o: any, opts: QueryOpts ) => { - if (opts.full) { + if (opts.partial) { + for (let p in sval) { + collect(res, s, p, o, sval[p], opts); + } + } else { for (let p in sval) { if (match(o, sval[p], opts)) { collectFull(res, s, sval); return; } } - } else { - for (let p in sval) { - collect(res, s, p, o, sval[p], opts); - } } }; const queryLL: QueryImpl = (res, db: any, s, p, o, opts) => { const sval = db[s]; const val = sval?.[p]; - if (opts.full) { - match(o, val, opts) && collectFull(res, s, sval); - } else { + if (opts.partial) { collect(res, s, p, o, val, opts); + } else { + match(o, val, opts) && collectFull(res, s, sval); } }; @@ -136,17 +136,17 @@ const queryLN: QueryImpl = (res, db: any, s, _, o, opts) => { }; const queryFL: QueryImpl = (res, db: any, s, p, o, opts) => { - if (opts.full) { + if (opts.partial) { + for (let $s in db) { + (s)($s) && collect(res, $s, p, o, db[$s]?.[p], opts); + } + } else { for (let $s in db) { const sval = db[$s]; (s)($s) && match(o, sval?.[p], opts) && collectFull(res, $s, sval); } - } else { - for (let $s in db) { - (s)($s) && collect(res, $s, p, o, db[$s]?.[p], opts); - } } }; @@ -163,14 +163,14 @@ const queryFN: QueryImpl = (res, db: any, s, _, o, opts) => { }; const queryNL: QueryImpl = (res, db: any, _, p, o, opts) => { - if (opts.full) { + if (opts.partial) { for (let s in db) { - const sval = db[s]; - match(o, sval[p], opts) && collectFull(res, s, sval); + collect(res, s, p, o, db[s][p], opts); } } else { for (let s in db) { - collect(res, s, p, o, db[s][p], opts); + const sval = db[s]; + match(o, sval[p], opts) && collectFull(res, s, sval); } } }; @@ -188,18 +188,18 @@ const queryNN: QueryImpl = (res, db: any, _, __, o, opts) => { }; const querySP: QueryImpl = (res, sval: any, s, p, _, opts) => { - if (opts.full) { + if (opts.partial) { for (let q in sval) { if ((p)(q)) { - collectFull(res, s, sval); - return; + const val = sval[q]; + val != null && addTriple(res, s, q, val); } } } else { for (let q in sval) { if ((p)(q)) { - const val = sval[q]; - val != null && addTriple(res, s, q, val); + collectFull(res, s, sval); + return; } } } @@ -209,7 +209,7 @@ const queryO: QueryImpl = (res, db: any, s, p, _, opts) => { const sval = db[s]; const val = sval?.[p]; val != null && - (opts.full ? collectFull(res, s, sval) : addTriple(res, s, p, val)); + (opts.partial ? addTriple(res, s, p, val) : collectFull(res, s, sval)); }; const impl = defmulti< @@ -248,15 +248,12 @@ impl.addAll({ ffl: queryFF, fff: queryFF, ffn: (res, db: any, s, p, _, opts) => { - if (opts.full) { + if (opts.partial) { for (let $s in db) { if ((s)($s)) { const sval = db[$s]; for (let $p in sval) { - if ((p)($p)) { - collectFull(res, $s, sval); - break; - } + (p)($p) && addTriple(res, $s, $p, sval[$p]); } } } @@ -265,7 +262,10 @@ impl.addAll({ if ((s)($s)) { const sval = db[$s]; for (let $p in sval) { - (p)($p) && addTriple(res, $s, $p, sval[$p]); + if ((p)($p)) { + collectFull(res, $s, sval); + break; + } } } } @@ -284,16 +284,16 @@ impl.addAll({ nll: queryNL, nlf: queryNL, nln: (res, db: any, _, p, __, opts) => { - if (opts.full) { + if (opts.partial) { for (let s in db) { - const sval = db[s]; - const val = sval[p]; - val != null && collectFull(res, s, sval); + const val = db[s][p]; + val != null && addTriple(res, s, p, val); } } else { for (let s in db) { - const val = db[s][p]; - val != null && addTriple(res, s, p, val); + const sval = db[s]; + const val = sval[p]; + val != null && collectFull(res, s, sval); } } }, @@ -310,7 +310,7 @@ impl.addAll({ }); export const defQuery = (opts?: Partial): QueryFn => { - opts = { full: true, inspect: false, equiv, ...opts }; + opts = { partial: false, cwise: true, equiv, ...opts }; return (src: any, ...args: any[]) => { if (isArray(src)) { let [p, o, res] = args; diff --git a/packages/oquery/test/index.ts b/packages/oquery/test/index.ts index 7781de7ec3..ec61f7d14e 100644 --- a/packages/oquery/test/index.ts +++ b/packages/oquery/test/index.ts @@ -216,8 +216,8 @@ describe("oquery", () => { nnn: [null, null, null, DB, DB], }; - const q1 = defQuery({ full: false, inspect: true }); - const q2 = defQuery({ full: true, inspect: true }); + const q1 = defQuery({ partial: true }); + const q2 = defQuery({ partial: false }); for (let id in tests) { const t = tests[id]; if (t) { @@ -238,7 +238,7 @@ describe("oquery", () => { }); it("coerce terms (array)", () => { - const query = defQuery({ full: false }); + const query = defQuery({ partial: true }); // S assert.deepStrictEqual(query(DB, ["alice", "bob"], "type", null), { alice: { type: "person" }, @@ -264,7 +264,7 @@ describe("oquery", () => { }); it("coerce terms (set)", () => { - const query = defQuery({ full: false }); + const query = defQuery({ partial: true }); // S assert.deepStrictEqual( query(DB, new Set(["alice", "bob"]), "type", null), @@ -307,7 +307,7 @@ describe("oquery", () => { }); it("full option", () => { - const query = defQuery({ full: true }); + const query = defQuery(); // S assert.deepStrictEqual(query(DB, ["alice", "bob"], "type", null), { alice: DB.alice, @@ -349,7 +349,7 @@ describe("oquery", () => { nn: [null, null, [...db]], }; - const query = defQuery({ full: false }); + const query = defQuery({ partial: true }); for (let id in tests) { const t = tests[id]; if (t) { From 7820e4dc9bffbfe33c0515a5ee48c5b989ed294b Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 02:45:04 +0000 Subject: [PATCH 12/71] docs(oquery): update/extend readme, pkg keywords --- packages/oquery/README.md | 150 ++++++++++++++++++++++++++++------ packages/oquery/package.json | 7 +- packages/oquery/tpl.readme.md | 143 +++++++++++++++++++++++++++----- 3 files changed, 255 insertions(+), 45 deletions(-) diff --git a/packages/oquery/README.md b/packages/oquery/README.md index 672c8db731..56ffe03f5b 100644 --- a/packages/oquery/README.md +++ b/packages/oquery/README.md @@ -11,32 +11,24 @@ This project is part of the - [About](#about) - [Status](#status) + - [Planned features](#planned-features) - [Related packages](#related-packages) - [Installation](#installation) - [Dependencies](#dependencies) - [API](#api) + - [Query patterns](#query-patterns) + - [Querying objects](#querying-objects) - [Authors](#authors) - [License](#license) ## About -Datalog-inspired, optimized pattern/predicate query engine for JS objects. +Datalog-inspired, optimized pattern/predicate query engine for JS objects & arrays. -Currently, there're 125 possible query approaches, which can be -collapsed into 27 unique query implementations. Each query is based on -RDF-style -[Subject-Predicate-Object](https://www.w3.org/TR/rdf11-primer/#section-triple) -patterns (only without requiring query terms to be URIs), with each term -one of: - -- `null` - wildcard, any non-null value in that position will be - selected -- Predicate function - called with all possible terms in that position -- Literal value - for subjects and predicates, this can only be a string - or number. For "object" position any value type is allowed -- Array or `Set` - multiple choices (literals) for given query term - -See basic query examples below... +This package provides a single higher-order function `defQuery()`, which takes a +number of options to configure query behavior and returns an actual query +function. This returned function can then be used for pattern matching of +objects and arrays of objects. ### Status @@ -44,8 +36,20 @@ See basic query examples below... [Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Boquery%5D+in%3Atitle) +### Planned features + +Some of the below features are already partially addressed by other +thi.ng/umbrella packages, but would benefit from a more unified approach. + +- [ ] query joins (AND queries) +- [ ] optional queries (OR queries) +- [ ] result projection +- [ ] result aggregation/grouping + ### Related packages +- [@thi.ng/associative](https://github.com/thi-ng/umbrella/tree/develop/packages/associative) - Alternative Map and Set implementations with customizable equality semantics & supporting operations +- [@thi.ng/egf](https://github.com/thi-ng/umbrella/tree/develop/packages/egf) - Extensible Graph Format - [@thi.ng/rstream-query](https://github.com/thi-ng/umbrella/tree/develop/packages/rstream-query) - [@thi.ng/rstream](https://github.com/thi-ng/umbrella/tree/develop/packages/rstream) based triple store & reactive query engine ## Installation @@ -76,12 +80,30 @@ Package sizes (gzipped, pre-treeshake): ESM: 1.15 KB / CJS: 1.20 KB / UMD: 1.23 [Generated API docs](https://docs.thi.ng/umbrella/oquery/) -TODO - Please see extensive tests for now... +Currently, there are 27 unique & optimized query implementations, each based on +RDF-style +[Subject-Predicate-Object](https://www.w3.org/TR/rdf11-primer/#section-triple) +triple patterns (only without any similar restrictions on query terms data +types), with each of the three terms one of: + +- **`null`** - wildcard, any non-null (or `undefined`) value in that position + will be selected +- **Predicate function** - called with all possible terms in that position +- **Literal value** - for subjects and predicates, this can only be a string + or number. For "object" position any value type is allowed +- **Array or `Set`** - multiple choices (literals) for given query term + +### Query patterns + +Object queries expect an object of the following structure: ```ts -import { defQuery } from "@thi.ng/oquery"; +{ subj1: { pred1: "obj1", pred2: 2, pred3: ["a", "b"] }, ... } +``` + +A concrete example: -// object to query +```ts const DB = { alice: { age: 33, @@ -99,10 +121,90 @@ const DB = { knows: ["alice", "bob", "dori"], }, }; +``` + +To find all answers for the question: Who knows Bob? + +```ts +// create query w/ custom options +// (options explained further below...) +const query = defQuery({ partial: true }); + +query(DB, null, "knows", "bob"); +// { +// alice: { knows: ["bob"] }, +// charlie: { knows: ["bob"] } +// } +``` + +For each of the 3 query terms, the following IDs are used: + +- `*` = null (wildcard) +- `l` = literal value (or array/set of literals) +- `f` = predicate function + +| SPO pattern | Matches... | +|-------------|---------------------------------------------------------------------------| +| `* * *` | everything | +| `* * l` | all objects with ANY property matching given literal | +| `* * f` | all objects with ANY property matching given predicate | +| `* l *` | objects with a property matching given literal | +| `* l l` | objects with a property AND its value matching given literals | +| `* l f` | objects with given property AND its value matching predicate | +| `* f *` | objects with properties matching given predicate | +| `* f l` | objects with properties matching given predicate AND their literal values | +| `* f f` | objects with properties matching given predicate AND their literal values | + +Further variations: + +(1) If the "subject" term is a literal (or array), then only object(s) for given +key value(s) are matched, using the same logic for the other two terms as in the +table above. + +```ts +// Who does Alice know? +query(DB, "alice", "knows", null) +// { alice: { knows: [ 'bob', 'charlie', 'dori' ] } } +``` + +(2) If the subject is a predicate, then any top-level keys matching the given +predicate will be matched (again using same rules as above for the other query +terms). + +```ts +// Anyone with initial "A" knows Charlie? +query(DB, (s) => s[0] === "a", "knows", "charlie") +// { alice: { knows: [ 'charlie' ] } } +``` + +(3) Instead of a root object (like `DB`), an array of objects can be queried. In +this case, only predicate-object patterns are used (**no subject terms**, aka +array indices in this case). + +```ts +const DBALT = [ + { id: "alice", knows: ["bob", "charlie"] }, + { id: "bob", knows: ["alice"] }, + { id: "charlie", knows: ["alice","bob","dori"] }, +]; + +defQuery()(DBALT, "knows", "alice") +// [ +// { id: 'bob', knows: [ 'alice' ] }, +// { id: 'charlie', knows: [ 'alice', 'bob', 'dori' ] } +// ] +``` -// init w/ default opts -// (uses @thi.ng/equiv for equality checks) -const query = defQuery(); +### Querying objects + +The following example is using the `DB` object defined [further +above](#query-patterns)... + +```ts +import { defQuery } from "@thi.ng/oquery"; + +// using partial result objects option for brevity here +const query = defQuery({ partial: true }); // find all subjects with `type = "person"` relationship query(DB, null, "type", "person"); @@ -117,13 +219,15 @@ query(DB, null, "age", (age) => age >= 33) // { alice: { age: 33 } } // select only subjects with A/B initials -query(DB, (id) => id > "a" && id < "c", null, null) +query(DB, (id) => id >= "a" && id < "c", null, null) // { // alice: { age: 33, knows: [ 'bob', 'charlie', 'dori' ], type: 'person' }, // bob: { age: 32, knows: [ 'alice' ], type: 'person', spouse: 'alice' } // } ``` +More query examples in [tests](https://github.com/thi-ng/umbrella/blob/develop/packages/oquery/test/index.ts)... + ## Authors Karsten Schmidt diff --git a/packages/oquery/package.json b/packages/oquery/package.json index 065f12219d..8cda2a9246 100644 --- a/packages/oquery/package.json +++ b/packages/oquery/package.json @@ -1,7 +1,7 @@ { "name": "@thi.ng/oquery", "version": "0.1.15", - "description": "Datalog-inspired, optimized pattern/predicate query engine for JS objects", + "description": "Datalog-inspired, optimized pattern/predicate query engine for JS objects & arrays", "module": "./index.js", "main": "./lib/index.js", "umd:main": "./lib/index.umd.js", @@ -60,11 +60,14 @@ "lib" ], "keywords": [ + "array", "datalog", + "graph", "object", "pattern", "predicate", "query", + "triples", "typescript", "wildcard" ], @@ -74,6 +77,8 @@ "sideEffects": false, "thi.ng": { "related": [ + "associative", + "egf", "rstream-query" ], "status": "alpha", diff --git a/packages/oquery/tpl.readme.md b/packages/oquery/tpl.readme.md index 66e179cc0e..713380d646 100644 --- a/packages/oquery/tpl.readme.md +++ b/packages/oquery/tpl.readme.md @@ -13,23 +13,22 @@ This project is part of the ${pkg.description} -Currently, there're 125 possible query approaches, which can be -collapsed into 27 unique query implementations. Each query is based on -RDF-style -[Subject-Predicate-Object](https://www.w3.org/TR/rdf11-primer/#section-triple) -patterns (only without requiring query terms to be URIs), with each term -one of: +This package provides a single higher-order function `defQuery()`, which takes a +number of options to configure query behavior and returns an actual query +function. This returned function can then be used for pattern matching of +objects and arrays of objects. -- `null` - wildcard, any non-null value in that position will be - selected -- Predicate function - called with all possible terms in that position -- Literal value - for subjects and predicates, this can only be a string - or number. For "object" position any value type is allowed -- Array or `Set` - multiple choices (literals) for given query term +${status} -See basic query examples below... +### Planned features -${status} +Some of the below features are already partially addressed by other +thi.ng/umbrella packages, but would benefit from a more unified approach. + +- [ ] query joins (AND queries) +- [ ] optional queries (OR queries) +- [ ] result projection +- [ ] result aggregation/grouping ${supportPackages} @@ -53,12 +52,31 @@ ${examples} ${docLink} -TODO - Please see extensive tests for now... +Currently, there are 27 unique & optimized query implementations, each based on +RDF-style +[Subject-Predicate-Object](https://www.w3.org/TR/rdf11-primer/#section-triple) +triple patterns (only without any similar restrictions on query terms data +types), with each of the three terms one of: + +- **`null`** - wildcard, any non-null (or `undefined`) value in that position + will be selected +- **Predicate function** - called with all possible terms in that position +- **Literal value** - for subjects and predicates, this can only be a string + or number. For "object" position any value type is allowed +- **Array or `Set`** - multiple choices (literals) for given query term + + +### Query patterns + +Object queries expect an object of the following structure: ```ts -import { defQuery } from "@thi.ng/oquery"; +{ subj1: { pred1: "obj1", pred2: 2, pred3: ["a", "b"] }, ... } +``` -// object to query +A concrete example: + +```ts const DB = { alice: { age: 33, @@ -76,10 +94,91 @@ const DB = { knows: ["alice", "bob", "dori"], }, }; +``` + +To find all answers for the question: Who knows Bob? + +```ts +// create query w/ custom options +// (options explained further below...) +const query = defQuery({ partial: true }); + +query(DB, null, "knows", "bob"); +// { +// alice: { knows: ["bob"] }, +// charlie: { knows: ["bob"] } +// } +``` + +For each of the 3 query terms, the following IDs are used: + +- `*` = null (wildcard) +- `l` = literal value (or array/set of literals) +- `f` = predicate function + + +| SPO pattern | Matches... | +|-------------|---------------------------------------------------------------------------| +| `* * *` | everything | +| `* * l` | all objects with ANY property matching given literal | +| `* * f` | all objects with ANY property matching given predicate | +| `* l *` | objects with a property matching given literal | +| `* l l` | objects with a property AND its value matching given literals | +| `* l f` | objects with given property AND its value matching predicate | +| `* f *` | objects with properties matching given predicate | +| `* f l` | objects with properties matching given predicate AND their literal values | +| `* f f` | objects with properties matching given predicate AND their literal values | + +Further variations: + +(1) If the "subject" term is a literal (or array), then only object(s) for given +key value(s) are matched, using the same logic for the other two terms as in the +table above. + +```ts +// Who does Alice know? +query(DB, "alice", "knows", null) +// { alice: { knows: [ 'bob', 'charlie', 'dori' ] } } +``` + +(2) If the subject is a predicate, then any top-level keys matching the given +predicate will be matched (again using same rules as above for the other query +terms). + +```ts +// Anyone with initial "A" knows Charlie? +query(DB, (s) => s[0] === "a", "knows", "charlie") +// { alice: { knows: [ 'charlie' ] } } +``` + +(3) Instead of a root object (like `DB`), an array of objects can be queried. In +this case, only predicate-object patterns are used (**no subject terms**, aka +array indices in this case). + +```ts +const DBALT = [ + { id: "alice", knows: ["bob", "charlie"] }, + { id: "bob", knows: ["alice"] }, + { id: "charlie", knows: ["alice","bob","dori"] }, +]; + +defQuery()(DBALT, "knows", "alice") +// [ +// { id: 'bob', knows: [ 'alice' ] }, +// { id: 'charlie', knows: [ 'alice', 'bob', 'dori' ] } +// ] +``` -// init w/ default opts -// (uses @thi.ng/equiv for equality checks) -const query = defQuery(); +### Querying objects + +The following example is using the `DB` object defined [further +above](#query-patterns)... + +```ts +import { defQuery } from "@thi.ng/oquery"; + +// using partial result objects option for brevity here +const query = defQuery({ partial: true }); // find all subjects with `type = "person"` relationship query(DB, null, "type", "person"); @@ -94,13 +193,15 @@ query(DB, null, "age", (age) => age >= 33) // { alice: { age: 33 } } // select only subjects with A/B initials -query(DB, (id) => id > "a" && id < "c", null, null) +query(DB, (id) => id >= "a" && id < "c", null, null) // { // alice: { age: 33, knows: [ 'bob', 'charlie', 'dori' ], type: 'person' }, // bob: { age: 32, knows: [ 'alice' ], type: 'person', spouse: 'alice' } // } ``` +More query examples in [tests](https://github.com/thi-ng/umbrella/blob/develop/packages/oquery/test/index.ts)... + ## Authors ${authors} From accf9e0b548df64dcab438a63adf2b313b8e3d72 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 02:46:16 +0000 Subject: [PATCH 13/71] chore: update .gitignore (examples) --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index c16517e425..00e6d39d19 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,10 @@ coverage dev doc docs +examples/delaunay-draw +examples/diagram +examples/formgen +examples/growth examples/dataflow-scenegraph examples/hdc examples/hdom-class From 05b97eda9f6fd8a5f84b4fea9693f8358a3dfe6b Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 03:01:29 +0000 Subject: [PATCH 14/71] buid(simd): update assemblyscript dep --- packages/simd/README.md | 2 +- packages/simd/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/simd/README.md b/packages/simd/README.md index 070121878d..169a47ee80 100644 --- a/packages/simd/README.md +++ b/packages/simd/README.md @@ -118,7 +118,7 @@ yarn add @thi.ng/simd ``` -Package sizes (gzipped, pre-treeshake): ESM: 2.47 KB / CJS: 2.53 KB / UMD: 2.65 KB +Package sizes (gzipped, pre-treeshake): ESM: 2.49 KB / CJS: 2.55 KB / UMD: 2.67 KB ## Dependencies diff --git a/packages/simd/package.json b/packages/simd/package.json index ff66a91385..8b8ceef1ec 100644 --- a/packages/simd/package.json +++ b/packages/simd/package.json @@ -44,7 +44,7 @@ "@microsoft/api-extractor": "^7.12.0", "@types/mocha": "^8.0.3", "@types/node": "^14.6.1", - "assemblyscript": "0.17.1", + "assemblyscript": "0.17.4", "mocha": "^8.2.1", "nyc": "^15.1.0", "ts-node": "^9.0.0", From c03f5263189cc7bc4f09c03571963f4345ab4605 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 03:02:48 +0000 Subject: [PATCH 15/71] build: update dev deps --- package.json | 6 +++--- yarn.lock | 42 +++++++++++++++++++++--------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 60d4a015fe..7e6d98abf3 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "packages/*" ], "devDependencies": { - "@microsoft/api-documenter": "^7.11.0", + "@microsoft/api-documenter": "^7.11.3", "@microsoft/api-extractor": "^7.12.0", "benchmark": "^2.1.4", "file-loader": "^6.2.0", @@ -15,9 +15,9 @@ "nyc": "^15.1.0", "parcel-bundler": "^1.12.4", "rimraf": "^3.0.2", - "rollup": "^2.33.3", + "rollup": "^2.34.1", "rollup-plugin-cleanup": "^3.2.1", - "terser": "^5.5.0", + "terser": "^5.5.1", "ts-loader": "^8.0.11", "typescript": "^4.1.2", "webpack": "^4.44.1", diff --git a/yarn.lock b/yarn.lock index 8dcde515fd..01fd3ca6bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1664,10 +1664,10 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" -"@microsoft/api-documenter@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@microsoft/api-documenter/-/api-documenter-7.11.0.tgz#ea09d22647a7585be9fc396cd707043f8ab1fa77" - integrity sha512-PT2cg5Lii7v7WJC/Xlm+4onpwT5NL2rj6dXuBOJzDLd5YO6QvEEoFZWPkdrMfcR3OWwrRZ9PaCxQ/nF3SSkaIA== +"@microsoft/api-documenter@^7.11.3": + version "7.11.3" + resolved "https://registry.yarnpkg.com/@microsoft/api-documenter/-/api-documenter-7.11.3.tgz#35ac2eaac9ab5cd31ab53b858937863601bcbc7c" + integrity sha512-tXdd+zWqufKDbbocIgMRB1AyRj0HiAI+gTIvCyAtJX9KOGFYreTt2kFPzFssPBMeNycq58zXl0fXRr+vA7WnNA== dependencies: "@microsoft/api-extractor-model" "7.12.0" "@microsoft/tsdoc" "0.12.19" @@ -2440,12 +2440,12 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" -assemblyscript@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.17.1.tgz#0eb10389846ff592d3893c816d5460d735392473" - integrity sha512-0cBGno+GYlY871s82WXhA5peRJxktGchJ7mdBDhf7mwoe4bPNuBrYYl2jRcXs8nQA/eQHNUiCJQ5dL61zQMXjw== +assemblyscript@0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.17.4.tgz#d4611db89a4294335ad47ec3c6661a26a4428771" + integrity sha512-4ZXY40CuB4kDYgUJr02oI0d201fvOkbRipcubplLd1U2mUC8LHdVKE/SJZw8MoRjU189GSGAEK25lkHmf6LiHw== dependencies: - binaryen "98.0.0-nightly.20201027" + binaryen "98.0.0-nightly.20201109" long "^4.0.0" assert-plus@1.0.0, assert-plus@^1.0.0: @@ -2598,10 +2598,10 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== -binaryen@98.0.0-nightly.20201027: - version "98.0.0-nightly.20201027" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-98.0.0-nightly.20201027.tgz#51ac7b46ee8a4cec9564b3699eadfba83e8b65fe" - integrity sha512-00/IHlumty/5XzJsdaMudayXofJiDb3Ytqqdn7OJBM0L9SuVg0o0xu4l93NVf+hO6jkgXNE1t+LdB0gOdeLdjA== +binaryen@98.0.0-nightly.20201109: + version "98.0.0-nightly.20201109" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-98.0.0-nightly.20201109.tgz#512bf6ca15c67bf7402144734a4836e63993aa05" + integrity sha512-iRarAqdH5lMWlMBzrDuJgLYJR2g4QXk93iYE2zpr6gEZkb/jCgDpPUXdhuN11Ge1zZ/6By4DwA1mmifcx7FWaw== bindings@^1.5.0: version "1.5.0" @@ -8506,10 +8506,10 @@ rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@^2.33.3: - version "2.33.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.33.3.tgz#ae72ce31f992b09a580072951bfea76e9df17342" - integrity sha512-RpayhPTe4Gu/uFGCmk7Gp5Z9Qic2VsqZ040G+KZZvsZYdcuWaJg678JeDJJvJeEQXminu24a2au+y92CUWVd+w== +rollup@^2.34.1: + version "2.34.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.34.1.tgz#a387230df02c58b242794a213dfb68b42de2c8fb" + integrity sha512-tGveB6NU5x4MS/iXaIsjfUkEv4hxzJJ4o0FRy5LO62Ndx3R2cmE1qsLYlSfRkvHUUPqWiFoxEm8pRftzh1a5HA== optionalDependencies: fsevents "~2.1.2" @@ -9319,10 +9319,10 @@ terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.0.tgz#1406fcb4d4bc517add3b22a9694284c040e33448" - integrity sha512-eopt1Gf7/AQyPhpygdKePTzaet31TvQxXvrf7xYUvD/d8qkCJm4SKPDzu+GHK5ZaYTn8rvttfqaZc3swK21e5g== +terser@^5.5.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" + integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== dependencies: commander "^2.20.0" source-map "~0.7.2" From 4c5ba4256c3b56f4d1e70069675e39f26ac11887 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 12:10:44 +0000 Subject: [PATCH 16/71] feat(oquery): add defKeyQuery(), refactor/fix types - add conditional types to fix return type inference (QueryFn/KeyQueryFn) - add defKeyQuery() - extract arrayQuery()/objQuery() - optimize arrayQuery() by pre-selecting query impl --- packages/oquery/src/api.ts | 113 +++++++++++++++++++-------- packages/oquery/src/query.ts | 140 +++++++++++++++++++++++++--------- packages/oquery/test/index.ts | 32 ++++++-- 3 files changed, 212 insertions(+), 73 deletions(-) diff --git a/packages/oquery/src/api.ts b/packages/oquery/src/api.ts index f18ec19f38..8270699c86 100644 --- a/packages/oquery/src/api.ts +++ b/packages/oquery/src/api.ts @@ -23,6 +23,8 @@ export type QueryObj = IObjectOf; * - l => literal * - n => null / wildcard * - f => function / predicate + * + * @internal */ export type QueryType = | "lll" @@ -53,6 +55,9 @@ export type QueryType = | "nnf" | "nnn"; +/** + * @internal + */ export type QueryImpl = Fn6< QueryObj, QueryObj, @@ -63,42 +68,85 @@ export type QueryImpl = Fn6< void >; +/** + * @internal + */ export type QueryImpls = Record; /** - * Query function overloads. + * Takes an object of this structure `{ s1: { p1: o, p2: ... }, s2: { p1: o + * }...}`, matches all entries using provided `s`(ubject), `p`(redicate) and + * `o`(object) terms. Returns new object of matched results (format depends + * on query config given to {@link defQuery}). + * + * @remarks + * If `res` is provided, results will be injected in that object. Otherwise + * a new result object will be created. */ -export interface QueryFn { - /** - * Takes an object of this structure `{ s1: { p1: o, p2: ... }, s2: { p1: o - * }...}`, matches all entries using provided `s`(ubject), `p`(redicate) and - * `o`(object) terms. Returns new object of matched results (format depends - * on query config given to {@link defQuery}). - * - * @remarks - * If `res` is provided, results will be injected in that object. Otherwise - * a new result object will be created. - */ - ( - obj: QueryObj, - s: SPInputTerm, - p: SPInputTerm, - o: OTerm, - res?: QueryObj - ): QueryObj; +export type ObjQueryFn = ( + obj: T, + s: SPInputTerm, + p: SPInputTerm, + o: OTerm, + res?: QueryObj +) => QueryObj; - /** - * Takes a source array of objects with this structure: [{p1: o, p2: ...}, - * ...]`, and matches each using provided `p`(redicate) and `o`bject terms. - * Returns new array of matched results (result object format depends on - * query config given to {@link defQuery}). - * @remarks - * If `res` is provided, results will be appended to that array. Otherwise - * a new result array will be created. - */ - (obj: QueryObj[], p: SPInputTerm, o: OTerm, res?: any[]): QueryObj[]; -} +/** + * Takes a source array of objects with this structure: [{p1: o, p2: ...}, + * ...]`, and matches each item using provided `p`(redicate) and `o`bject terms. + * Returns new array of matched results (result object format depends on query + * config given to {@link defQuery}). + * @remarks + * If `res` is provided, results will be appended to that array. Otherwise a new + * result array will be created. + */ +export type ArrayQueryFn = ( + src: T, + p: SPInputTerm, + o: OTerm, + res?: QueryObj[] +) => QueryObj[]; +/** + * Similar to {@link ObjQueryFn}, but only collects and returns a set of + * matching `s` keys. + */ +export type ObjKeyQueryFn = ( + obj: T, + s: SPInputTerm, + p: SPInputTerm, + o: OTerm, + res?: Set +) => Set; + +/** + * Similar to {@link ArrayQueryFn}, but only collects and returns a set of + * indices of matching objects. + */ +export type ArrayKeyQueryFn = ( + src: T, + p: SPInputTerm, + o: OTerm, + res?: Set +) => Set; + +/** + * Conditional return type for {@link defQuery}. + */ +export type QueryFn = T extends QueryObj[] + ? ArrayQueryFn + : ObjQueryFn; + +/** + * Conditional return type for {@link defKeyQuery}. + */ +export type KeyQueryFn = T extends QueryObj[] + ? ArrayKeyQueryFn + : ObjKeyQueryFn; + +/** + * Query behavior options. + */ export interface QueryOpts { /** * If false, an entire object is included in the solution as soon as any of @@ -144,3 +192,8 @@ export interface QueryOpts { */ equiv: Predicate2; } + +/** + * Subset of {@link QueryOpts} applicable to {@link defKeyQuery}. + */ +export interface KeyQueryOpts extends Pick {} diff --git a/packages/oquery/src/query.ts b/packages/oquery/src/query.ts index a93508dad7..1f3d35ad7e 100644 --- a/packages/oquery/src/query.ts +++ b/packages/oquery/src/query.ts @@ -1,15 +1,19 @@ -import type { Predicate } from "@thi.ng/api"; +import type { Fn2, Predicate } from "@thi.ng/api"; import { isArray, isFunction, isSet } from "@thi.ng/checks"; import { defmulti } from "@thi.ng/defmulti"; import { equiv } from "@thi.ng/equiv"; import type { FTerm, + KeyQueryFn, + KeyQueryOpts, OTerm, QueryFn, QueryImpl, QueryImpls, QueryObj, QueryOpts, + QueryType, + SPInputTerm, SPTerm, } from "./api"; @@ -212,17 +216,7 @@ const queryO: QueryImpl = (res, db: any, s, p, _, opts) => { (opts.partial ? addTriple(res, s, p, val) : collectFull(res, s, sval)); }; -const impl = defmulti< - QueryObj, - QueryObj, - SPTerm, - SPTerm, - OTerm, - QueryOpts, - void ->((_, __, s, p, o) => classify(s) + classify(p) + classify(o)); - -impl.addAll({ +const IMPLS = { lll: queryLL, llf: queryLL, lln: queryO, @@ -307,34 +301,104 @@ impl.addAll({ nnl: queryNN, nnf: queryNN, nnn: (res, db) => Object.assign(res, db), -}); +}; -export const defQuery = (opts?: Partial): QueryFn => { - opts = { partial: false, cwise: true, equiv, ...opts }; - return (src: any, ...args: any[]) => { +/** + * Query function implementation, dispatches to one of the 27 optimized + * functions based on given query pattern. + * + * @internal + */ +const impl = defmulti< + QueryObj, + QueryObj, + SPTerm, + SPTerm, + OTerm, + QueryOpts, + void +>((_, __, s, p, o) => classify(s) + classify(p) + classify(o)); +impl.addAll(IMPLS); + +const objQuery = (src: QueryObj[], opts: QueryOpts, args: any[]) => { + let [s, p, o, out] = <[SPInputTerm, SPInputTerm, OTerm, QueryObj?]>args; + out = out || {}; + impl(out, src, coerceStr(s), coerceStr(p), coerce(o), opts); + return out; +}; + +const arrayQuery = ( + src: QueryObj[], + opts: QueryOpts, + p: SPInputTerm, + o: OTerm, + collect: Fn2 +) => { + const $p = coerceStr(p); + const $o = coerce(o); + // pre-select implementation to avoid dynamic dispatch + const impl = IMPLS[("n" + classify($p) + classify($o))]; + for (let i = 0, n = src.length; i < n; i++) { + const res: QueryObj = {}; + impl(res, { _: src[i] }, null, $p, $o, opts); + res._ && collect(res._, i); + } +}; + +/** + * Generic Higher-order function to return an actual query function based on + * given behavior options. + * + * @remarks + * @see {@link QueryOpts} + * @see {@link ObjQueryFn} + * @see {@link ArrayQueryFn} + * @see {@link defKeyQuery} + * + * @param opts + */ +export const defQuery = ( + opts?: Partial +): QueryFn => { + const $opts: QueryOpts = { partial: false, cwise: true, equiv, ...opts }; + return >((src: any, ...args: any[]): any => { if (isArray(src)) { - let [p, o, res] = args; - res = res || []; - p = coerceStr(p); - o = coerce(o); - for (let i = 0, n = src.length; i < n; i++) { - const curr: QueryObj = {}; - impl(curr, { _: src[i] }, null, p, o, opts); - curr._ && res.push(curr._); - } - return res; + const out: QueryObj[] = args[2] || []; + arrayQuery(src, $opts, args[0], args[1], (x) => out.push(x)); + return out; + } else { + return objQuery(src, $opts, args); + } + }); +}; + +/** + * Generic Higher-order function to return an actual query function based on + * given behavior options. Unlike {@link defQuery}, key query functions only + * return sets of keys (or indices) of matching objects. + * + * @remarks + * @see {@link KeyQueryOpts} + * @see {@link ObjKeyQueryFn} + * @see {@link ArrayKeyQueryFn} + * + * @param opts + */ +export const defKeyQuery = ( + opts?: Partial +) => { + const $opts: QueryOpts = { partial: false, cwise: true, equiv, ...opts }; + return >((src: any, ...args: any[]): any => { + if (isArray(src)) { + const out = args[2] || new Set(); + arrayQuery(src, $opts, args[0], args[1], (_, i) => out.add(i)); + return out; } else { - let [s, p, o, res] = args; - res = res || {}; - impl( - res, - src, - coerceStr(s), - coerceStr(p), - coerce(o), - opts - ); - return res; + const res = objQuery(src, $opts, args.slice(0, 3)); + const out = args[3]; + if (!out) return new Set(Object.keys(res)); + for (let k in res) out.add(k); + return out; } - }; + }); }; diff --git a/packages/oquery/test/index.ts b/packages/oquery/test/index.ts index ec61f7d14e..06896f4b3a 100644 --- a/packages/oquery/test/index.ts +++ b/packages/oquery/test/index.ts @@ -1,6 +1,6 @@ import { isNumber } from "@thi.ng/checks"; import * as assert from "assert"; -import { defQuery, QueryType, SPInputTerm, OTerm } from "../src"; +import { defKeyQuery, defQuery, OTerm, QueryType, SPInputTerm } from "../src"; const DB = { alice: { @@ -20,6 +20,8 @@ const DB = { }, }; +const DB_A: any[] = [{ id: 1 }, { id: 11, name: "b" }, { name: "c" }]; + describe("oquery", () => { it("all patterns", () => { const { alice, bob, charlie } = DB; @@ -333,7 +335,6 @@ describe("oquery", () => { }); it("arrays", () => { - const db = [{ id: 1 }, { id: 11, name: "b" }, { name: "c" }]; const tests: Record< "ff" | "fl" | "fn" | "lf" | "ll" | "ln" | "nf" | "nl" | "nn", [SPInputTerm, OTerm, any] @@ -346,14 +347,14 @@ describe("oquery", () => { ln: ["id", null, [{ id: 1 }, { id: 11 }]], nf: [null, isNumber, [{ id: 1 }, { id: 11 }]], nl: [null, 11, [{ id: 11 }]], - nn: [null, null, [...db]], + nn: [null, null, [...DB_A]], }; - const query = defQuery({ partial: true }); + const query = defQuery({ partial: true }); for (let id in tests) { const t = tests[id]; if (t) { - const res = query(db, t[0], t[1]); + const res = query(DB_A, t[0], t[1]); assert.deepStrictEqual( res, t[2], @@ -362,4 +363,25 @@ describe("oquery", () => { } } }); + + it("key query", () => { + assert.deepStrictEqual( + defKeyQuery()(DB, null, "type", "person"), + new Set(["alice", "bob"]) + ); + const res1 = new Set(["xxx"]); + assert.deepStrictEqual( + defKeyQuery()(DB, null, "type", "person", res1), + new Set(["alice", "bob", "xxx"]) + ); + assert.deepStrictEqual( + defKeyQuery()(DB_A, "name", null), + new Set([1, 2]) + ); + const res2 = new Set([-1]); + assert.deepStrictEqual( + defKeyQuery()(DB_A, "name", null, res2), + new Set([1, 2, -1]) + ); + }); }); From 4a6288c34346bf667789119e8bcfe8b10a16e458 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 12:37:50 +0000 Subject: [PATCH 17/71] docs: update readmes --- packages/oquery/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oquery/README.md b/packages/oquery/README.md index 56ffe03f5b..32c056ade1 100644 --- a/packages/oquery/README.md +++ b/packages/oquery/README.md @@ -66,7 +66,7 @@ yarn add @thi.ng/oquery ``` -Package sizes (gzipped, pre-treeshake): ESM: 1.15 KB / CJS: 1.20 KB / UMD: 1.23 KB +Package sizes (gzipped, pre-treeshake): ESM: 1.29 KB / CJS: 1.34 KB / UMD: 1.35 KB ## Dependencies From 02c050c499dad9f1df77845ab7d91678c6b6ecd9 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 12:43:25 +0000 Subject: [PATCH 18/71] chore(examples): update plausible.io ID --- examples/adaptive-threshold/index.html | 2 +- examples/async-effect/index.html | 2 +- examples/bitmap-font/index.html | 2 +- examples/canvas-dial/index.html | 2 +- examples/cellular-automata/index.html | 2 +- examples/commit-table-ssr/index.html | 2 +- examples/crypto-chart/index.html | 2 +- examples/devcards/index.html | 2 +- examples/ellipse-proximity/index.html | 2 +- examples/fft-synth/index.html | 2 +- examples/geom-convex-hull/index.html | 2 +- examples/geom-fuzz-basics/index.html | 2 +- examples/geom-knn/index.html | 2 +- examples/geom-tessel/index.html | 2 +- examples/geom-voronoi-mst/index.html | 2 +- examples/gesture-analysis/index.html | 2 +- examples/grid-iterators/index.html | 2 +- examples/hdom-basics/index.html | 2 +- examples/hdom-benchmark/index.html | 2 +- examples/hdom-benchmark2/index.html | 2 +- examples/hdom-canvas-clock/index.html | 2 +- examples/hdom-canvas-draw/index.html | 2 +- examples/hdom-canvas-particles/index.html | 2 +- examples/hdom-canvas-shapes/index.html | 2 +- examples/hdom-dropdown-fuzzy/index.html | 2 +- examples/hdom-dropdown/index.html | 2 +- examples/hdom-dyn-context/index.html | 2 +- examples/hdom-elm/index.html | 2 +- examples/hdom-inner-html/index.html | 2 +- examples/hdom-local-render/index.html | 2 +- examples/hdom-localstate/index.html | 2 +- examples/hdom-skip-nested/index.html | 2 +- examples/hdom-skip/index.html | 2 +- examples/hdom-theme-adr-0003/index.html | 2 +- examples/hdom-toggle/index.html | 2 +- examples/hdom-vscroller/index.html | 2 +- examples/hiccup-canvas-arcs/index.html | 2 +- examples/hmr-basics/index.html | 2 +- examples/hydrate-basics/index.html | 2 +- examples/imgui-basics/index.html | 2 +- examples/imgui/index.html | 2 +- examples/interceptor-basics/index.html | 2 +- examples/interceptor-basics2/index.html | 2 +- examples/iso-plasma/index.html | 2 +- examples/json-components/index.html | 2 +- examples/login-form/index.html | 2 +- examples/mandelbrot/index.html | 2 +- examples/markdown/index.html | 2 +- examples/multitouch/index.html | 2 +- examples/parse-playground/index.html | 2 +- examples/pixel-basics/index.html | 2 +- examples/poisson-circles/index.html | 2 +- examples/poly-spline/index.html | 2 +- examples/porter-duff/index.html | 2 +- examples/ramp-synth/index.html | 2 +- examples/rdom-basics/index.html | 2 +- examples/rdom-dnd/index.html | 2 +- examples/rdom-lissajous/index.html | 2 +- examples/rdom-search-docs/index.html | 2 +- examples/rdom-svg-nodes/index.html | 43 +++++++++++++++-------- examples/rotating-voronoi/index.html | 2 +- examples/router-basics/index.html | 2 +- examples/rstream-dataflow/index.html | 2 +- examples/rstream-event-loop/index.html | 2 +- examples/rstream-grid/index.html | 2 +- examples/rstream-hdom/index.html | 2 +- examples/rstream-spreadsheet/index.html | 2 +- examples/scenegraph-image/index.html | 2 +- examples/scenegraph/index.html | 2 +- examples/shader-ast-canvas2d/index.html | 2 +- examples/shader-ast-evo/index.html | 2 +- examples/shader-ast-noise/index.html | 2 +- examples/shader-ast-raymarch/index.html | 2 +- examples/shader-ast-sdf2d/index.html | 2 +- examples/shader-ast-tunnel/index.html | 2 +- examples/shader-ast-workers/index.html | 2 +- examples/shader-graph/index.html | 2 +- examples/soa-ecs/index.html | 2 +- examples/stratified-grid/index.html | 2 +- examples/svg-barchart/index.html | 2 +- examples/svg-particles/index.html | 2 +- examples/svg-waveform/index.html | 2 +- examples/talk-slides/index.html | 2 +- examples/text-canvas/index.html | 2 +- examples/todo-list/index.html | 2 +- examples/transducers-hdom/index.html | 2 +- examples/triple-query/index.html | 2 +- examples/webgl-cube/index.html | 2 +- examples/webgl-cubemap/index.html | 2 +- examples/webgl-grid/index.html | 2 +- examples/webgl-msdf/index.html | 2 +- examples/webgl-multipass/index.html | 2 +- examples/webgl-shadertoy/index.html | 2 +- examples/webgl-ssao/index.html | 2 +- examples/wolfram/index.html | 2 +- examples/xml-converter/index.html | 2 +- scripts/make-example | 2 +- 97 files changed, 124 insertions(+), 111 deletions(-) diff --git a/examples/adaptive-threshold/index.html b/examples/adaptive-threshold/index.html index d5dbbaee4a..5cd9b402b9 100644 --- a/examples/adaptive-threshold/index.html +++ b/examples/adaptive-threshold/index.html @@ -13,7 +13,7 @@ diff --git a/examples/async-effect/index.html b/examples/async-effect/index.html index 84f590e35d..85e1afcc39 100644 --- a/examples/async-effect/index.html +++ b/examples/async-effect/index.html @@ -30,7 +30,7 @@ diff --git a/examples/bitmap-font/index.html b/examples/bitmap-font/index.html index bc883e1082..33c4369f85 100644 --- a/examples/bitmap-font/index.html +++ b/examples/bitmap-font/index.html @@ -13,7 +13,7 @@ diff --git a/examples/canvas-dial/index.html b/examples/canvas-dial/index.html index f476b1a210..da2c34495e 100644 --- a/examples/canvas-dial/index.html +++ b/examples/canvas-dial/index.html @@ -13,7 +13,7 @@ diff --git a/examples/cellular-automata/index.html b/examples/cellular-automata/index.html index 829d30c347..5f1d0e6389 100644 --- a/examples/cellular-automata/index.html +++ b/examples/cellular-automata/index.html @@ -19,7 +19,7 @@ diff --git a/examples/commit-table-ssr/index.html b/examples/commit-table-ssr/index.html index 49a2a6bd36..68b727be3a 100644 --- a/examples/commit-table-ssr/index.html +++ b/examples/commit-table-ssr/index.html @@ -15,7 +15,7 @@ diff --git a/examples/crypto-chart/index.html b/examples/crypto-chart/index.html index 9b8efdf8c9..2a9d97cbce 100644 --- a/examples/crypto-chart/index.html +++ b/examples/crypto-chart/index.html @@ -13,7 +13,7 @@ diff --git a/examples/devcards/index.html b/examples/devcards/index.html index eef0d80251..d44367df37 100644 --- a/examples/devcards/index.html +++ b/examples/devcards/index.html @@ -54,7 +54,7 @@ diff --git a/examples/ellipse-proximity/index.html b/examples/ellipse-proximity/index.html index c0e00d0186..118bb95535 100644 --- a/examples/ellipse-proximity/index.html +++ b/examples/ellipse-proximity/index.html @@ -13,7 +13,7 @@ diff --git a/examples/fft-synth/index.html b/examples/fft-synth/index.html index 2b5739b3db..84e3df28e5 100644 --- a/examples/fft-synth/index.html +++ b/examples/fft-synth/index.html @@ -17,7 +17,7 @@ diff --git a/examples/geom-convex-hull/index.html b/examples/geom-convex-hull/index.html index bad1e4ba38..49e150bfd2 100644 --- a/examples/geom-convex-hull/index.html +++ b/examples/geom-convex-hull/index.html @@ -13,7 +13,7 @@ diff --git a/examples/geom-fuzz-basics/index.html b/examples/geom-fuzz-basics/index.html index 4c1e5a0ce1..b5b121f0a2 100644 --- a/examples/geom-fuzz-basics/index.html +++ b/examples/geom-fuzz-basics/index.html @@ -13,7 +13,7 @@ diff --git a/examples/geom-knn/index.html b/examples/geom-knn/index.html index 99b74606dd..13b4ef8deb 100644 --- a/examples/geom-knn/index.html +++ b/examples/geom-knn/index.html @@ -13,7 +13,7 @@ diff --git a/examples/geom-tessel/index.html b/examples/geom-tessel/index.html index e2af57d4f4..f2cab2b4a3 100644 --- a/examples/geom-tessel/index.html +++ b/examples/geom-tessel/index.html @@ -13,7 +13,7 @@ diff --git a/examples/geom-voronoi-mst/index.html b/examples/geom-voronoi-mst/index.html index c6049d21b2..e35ca8f784 100644 --- a/examples/geom-voronoi-mst/index.html +++ b/examples/geom-voronoi-mst/index.html @@ -13,7 +13,7 @@ diff --git a/examples/gesture-analysis/index.html b/examples/gesture-analysis/index.html index e09cd00bc2..b76376563a 100644 --- a/examples/gesture-analysis/index.html +++ b/examples/gesture-analysis/index.html @@ -13,7 +13,7 @@ diff --git a/examples/grid-iterators/index.html b/examples/grid-iterators/index.html index 8201e298c9..e0e355af06 100644 --- a/examples/grid-iterators/index.html +++ b/examples/grid-iterators/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-basics/index.html b/examples/hdom-basics/index.html index 0d38454af3..7decd27244 100644 --- a/examples/hdom-basics/index.html +++ b/examples/hdom-basics/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-benchmark/index.html b/examples/hdom-benchmark/index.html index fa26691e0e..e6e709a190 100644 --- a/examples/hdom-benchmark/index.html +++ b/examples/hdom-benchmark/index.html @@ -43,7 +43,7 @@ diff --git a/examples/hdom-benchmark2/index.html b/examples/hdom-benchmark2/index.html index 4cd6ce1173..de4da53212 100644 --- a/examples/hdom-benchmark2/index.html +++ b/examples/hdom-benchmark2/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-canvas-clock/index.html b/examples/hdom-canvas-clock/index.html index 4b0deac88e..37243153cf 100644 --- a/examples/hdom-canvas-clock/index.html +++ b/examples/hdom-canvas-clock/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-canvas-draw/index.html b/examples/hdom-canvas-draw/index.html index 74ba113536..ef1c6cafce 100644 --- a/examples/hdom-canvas-draw/index.html +++ b/examples/hdom-canvas-draw/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-canvas-particles/index.html b/examples/hdom-canvas-particles/index.html index 47ad61a200..c6d6ad5a5c 100644 --- a/examples/hdom-canvas-particles/index.html +++ b/examples/hdom-canvas-particles/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-canvas-shapes/index.html b/examples/hdom-canvas-shapes/index.html index 2379ed3213..3a8d5142b5 100644 --- a/examples/hdom-canvas-shapes/index.html +++ b/examples/hdom-canvas-shapes/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-dropdown-fuzzy/index.html b/examples/hdom-dropdown-fuzzy/index.html index c0110f2a87..ee269dd997 100644 --- a/examples/hdom-dropdown-fuzzy/index.html +++ b/examples/hdom-dropdown-fuzzy/index.html @@ -20,7 +20,7 @@ diff --git a/examples/hdom-dropdown/index.html b/examples/hdom-dropdown/index.html index 1a83b394cf..4158b5006f 100644 --- a/examples/hdom-dropdown/index.html +++ b/examples/hdom-dropdown/index.html @@ -18,7 +18,7 @@ diff --git a/examples/hdom-dyn-context/index.html b/examples/hdom-dyn-context/index.html index 46f394ab54..700bc164e9 100644 --- a/examples/hdom-dyn-context/index.html +++ b/examples/hdom-dyn-context/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-elm/index.html b/examples/hdom-elm/index.html index 73a226cb7e..1d77422a59 100644 --- a/examples/hdom-elm/index.html +++ b/examples/hdom-elm/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-inner-html/index.html b/examples/hdom-inner-html/index.html index fce56aeeec..884104920d 100644 --- a/examples/hdom-inner-html/index.html +++ b/examples/hdom-inner-html/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-local-render/index.html b/examples/hdom-local-render/index.html index d5d37c08d5..c5860d45c5 100644 --- a/examples/hdom-local-render/index.html +++ b/examples/hdom-local-render/index.html @@ -17,7 +17,7 @@ diff --git a/examples/hdom-localstate/index.html b/examples/hdom-localstate/index.html index 908b040c69..bcab675f73 100644 --- a/examples/hdom-localstate/index.html +++ b/examples/hdom-localstate/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-skip-nested/index.html b/examples/hdom-skip-nested/index.html index 3ea5a960a3..a92ef05c02 100644 --- a/examples/hdom-skip-nested/index.html +++ b/examples/hdom-skip-nested/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-skip/index.html b/examples/hdom-skip/index.html index 3d971e3266..2e0ecc7bb8 100644 --- a/examples/hdom-skip/index.html +++ b/examples/hdom-skip/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-theme-adr-0003/index.html b/examples/hdom-theme-adr-0003/index.html index 663a40964e..fa651c4e73 100644 --- a/examples/hdom-theme-adr-0003/index.html +++ b/examples/hdom-theme-adr-0003/index.html @@ -18,7 +18,7 @@ diff --git a/examples/hdom-toggle/index.html b/examples/hdom-toggle/index.html index 3c3272ce8b..9733d7eb3f 100644 --- a/examples/hdom-toggle/index.html +++ b/examples/hdom-toggle/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hdom-vscroller/index.html b/examples/hdom-vscroller/index.html index b34de8a985..b0c13f8488 100644 --- a/examples/hdom-vscroller/index.html +++ b/examples/hdom-vscroller/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hiccup-canvas-arcs/index.html b/examples/hiccup-canvas-arcs/index.html index 65e99950b1..3a9dd11abd 100644 --- a/examples/hiccup-canvas-arcs/index.html +++ b/examples/hiccup-canvas-arcs/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hmr-basics/index.html b/examples/hmr-basics/index.html index 9d74b5dcdb..916fd94eed 100644 --- a/examples/hmr-basics/index.html +++ b/examples/hmr-basics/index.html @@ -13,7 +13,7 @@ diff --git a/examples/hydrate-basics/index.html b/examples/hydrate-basics/index.html index 9cb6704427..6c8e1a0146 100644 --- a/examples/hydrate-basics/index.html +++ b/examples/hydrate-basics/index.html @@ -13,7 +13,7 @@ diff --git a/examples/imgui-basics/index.html b/examples/imgui-basics/index.html index dbb628615f..d741a75df6 100644 --- a/examples/imgui-basics/index.html +++ b/examples/imgui-basics/index.html @@ -17,7 +17,7 @@ diff --git a/examples/imgui/index.html b/examples/imgui/index.html index 92dff49624..76798ce4f3 100644 --- a/examples/imgui/index.html +++ b/examples/imgui/index.html @@ -24,7 +24,7 @@ diff --git a/examples/interceptor-basics/index.html b/examples/interceptor-basics/index.html index efce38449f..0df1112be3 100644 --- a/examples/interceptor-basics/index.html +++ b/examples/interceptor-basics/index.html @@ -13,7 +13,7 @@ diff --git a/examples/interceptor-basics2/index.html b/examples/interceptor-basics2/index.html index 8bbae7975d..565d83b3a2 100644 --- a/examples/interceptor-basics2/index.html +++ b/examples/interceptor-basics2/index.html @@ -30,7 +30,7 @@ width: 5rem; text-align: center; } - +

This example demonstrates the use of @thi.ng/interceptors' event bus and interceptor driven event handling diff --git a/examples/iso-plasma/index.html b/examples/iso-plasma/index.html index 19a4a2aa82..fdc98b618c 100644 --- a/examples/iso-plasma/index.html +++ b/examples/iso-plasma/index.html @@ -13,7 +13,7 @@ diff --git a/examples/json-components/index.html b/examples/json-components/index.html index 8af30a03bc..999d3b0887 100644 --- a/examples/json-components/index.html +++ b/examples/json-components/index.html @@ -110,7 +110,7 @@ diff --git a/examples/login-form/index.html b/examples/login-form/index.html index dd21c64ffc..4b2a70489d 100644 --- a/examples/login-form/index.html +++ b/examples/login-form/index.html @@ -26,7 +26,7 @@ diff --git a/examples/mandelbrot/index.html b/examples/mandelbrot/index.html index 851fb4d332..e60dd33c81 100644 --- a/examples/mandelbrot/index.html +++ b/examples/mandelbrot/index.html @@ -13,7 +13,7 @@ diff --git a/examples/markdown/index.html b/examples/markdown/index.html index c36a4001be..1618d8dd96 100644 --- a/examples/markdown/index.html +++ b/examples/markdown/index.html @@ -36,7 +36,7 @@ diff --git a/examples/multitouch/index.html b/examples/multitouch/index.html index b365cabef8..0d4451f375 100644 --- a/examples/multitouch/index.html +++ b/examples/multitouch/index.html @@ -13,7 +13,7 @@ diff --git a/examples/parse-playground/index.html b/examples/parse-playground/index.html index 5c4b598b57..941ebce1ef 100644 --- a/examples/parse-playground/index.html +++ b/examples/parse-playground/index.html @@ -44,7 +44,7 @@ diff --git a/examples/pixel-basics/index.html b/examples/pixel-basics/index.html index 8d44f44253..82a3690695 100644 --- a/examples/pixel-basics/index.html +++ b/examples/pixel-basics/index.html @@ -13,7 +13,7 @@ diff --git a/examples/poisson-circles/index.html b/examples/poisson-circles/index.html index 3e0a6933be..e30a5fb1c1 100644 --- a/examples/poisson-circles/index.html +++ b/examples/poisson-circles/index.html @@ -13,7 +13,7 @@ diff --git a/examples/poly-spline/index.html b/examples/poly-spline/index.html index c028c3d835..ac23bd744d 100644 --- a/examples/poly-spline/index.html +++ b/examples/poly-spline/index.html @@ -13,7 +13,7 @@ diff --git a/examples/porter-duff/index.html b/examples/porter-duff/index.html index b4eecf01af..6d1a637779 100644 --- a/examples/porter-duff/index.html +++ b/examples/porter-duff/index.html @@ -13,7 +13,7 @@ diff --git a/examples/ramp-synth/index.html b/examples/ramp-synth/index.html index 8dcccf717d..118f2de0d5 100644 --- a/examples/ramp-synth/index.html +++ b/examples/ramp-synth/index.html @@ -13,7 +13,7 @@ diff --git a/examples/rdom-basics/index.html b/examples/rdom-basics/index.html index 972dd24175..8300301dfb 100644 --- a/examples/rdom-basics/index.html +++ b/examples/rdom-basics/index.html @@ -17,7 +17,7 @@ diff --git a/examples/rdom-dnd/index.html b/examples/rdom-dnd/index.html index da6bba325e..6a8f3a66aa 100644 --- a/examples/rdom-dnd/index.html +++ b/examples/rdom-dnd/index.html @@ -22,7 +22,7 @@ diff --git a/examples/rdom-lissajous/index.html b/examples/rdom-lissajous/index.html index 16471096a4..48154ac7c2 100644 --- a/examples/rdom-lissajous/index.html +++ b/examples/rdom-lissajous/index.html @@ -37,7 +37,7 @@ diff --git a/examples/rdom-search-docs/index.html b/examples/rdom-search-docs/index.html index 508aad6c1b..f84b1eea93 100644 --- a/examples/rdom-search-docs/index.html +++ b/examples/rdom-search-docs/index.html @@ -13,7 +13,7 @@ diff --git a/examples/rdom-svg-nodes/index.html b/examples/rdom-svg-nodes/index.html index 9890428821..c28cf56173 100644 --- a/examples/rdom-svg-nodes/index.html +++ b/examples/rdom-svg-nodes/index.html @@ -1,18 +1,31 @@ - - - - - rdom-svg-nodes - - - - - -

- - - + + + + + rdom-svg-nodes + + + + + +
+ + + diff --git a/examples/rotating-voronoi/index.html b/examples/rotating-voronoi/index.html index ae5598bb54..aeb50daf9d 100644 --- a/examples/rotating-voronoi/index.html +++ b/examples/rotating-voronoi/index.html @@ -13,7 +13,7 @@ diff --git a/examples/router-basics/index.html b/examples/router-basics/index.html index 77877bc83d..308b56e978 100644 --- a/examples/router-basics/index.html +++ b/examples/router-basics/index.html @@ -52,7 +52,7 @@ diff --git a/examples/rstream-dataflow/index.html b/examples/rstream-dataflow/index.html index 178873793d..1313cef941 100644 --- a/examples/rstream-dataflow/index.html +++ b/examples/rstream-dataflow/index.html @@ -24,7 +24,7 @@ diff --git a/examples/rstream-event-loop/index.html b/examples/rstream-event-loop/index.html index 3e4b3f07ed..f8b123caa3 100644 --- a/examples/rstream-event-loop/index.html +++ b/examples/rstream-event-loop/index.html @@ -13,7 +13,7 @@ diff --git a/examples/rstream-grid/index.html b/examples/rstream-grid/index.html index b0fa79d67f..a947814e7a 100644 --- a/examples/rstream-grid/index.html +++ b/examples/rstream-grid/index.html @@ -120,7 +120,7 @@ diff --git a/examples/rstream-hdom/index.html b/examples/rstream-hdom/index.html index 1e7c03252a..bdc1d79c48 100644 --- a/examples/rstream-hdom/index.html +++ b/examples/rstream-hdom/index.html @@ -14,7 +14,7 @@ diff --git a/examples/rstream-spreadsheet/index.html b/examples/rstream-spreadsheet/index.html index c8ce932014..1e8ae7ccb1 100644 --- a/examples/rstream-spreadsheet/index.html +++ b/examples/rstream-spreadsheet/index.html @@ -13,7 +13,7 @@ diff --git a/examples/scenegraph-image/index.html b/examples/scenegraph-image/index.html index 407650b65e..38e34c8e15 100644 --- a/examples/scenegraph-image/index.html +++ b/examples/scenegraph-image/index.html @@ -13,7 +13,7 @@ diff --git a/examples/scenegraph/index.html b/examples/scenegraph/index.html index dfdc4289af..cc77999cfb 100644 --- a/examples/scenegraph/index.html +++ b/examples/scenegraph/index.html @@ -13,7 +13,7 @@ diff --git a/examples/shader-ast-canvas2d/index.html b/examples/shader-ast-canvas2d/index.html index 6ec14bc688..df698480a0 100644 --- a/examples/shader-ast-canvas2d/index.html +++ b/examples/shader-ast-canvas2d/index.html @@ -13,7 +13,7 @@ diff --git a/examples/shader-ast-evo/index.html b/examples/shader-ast-evo/index.html index b4ef694a9d..f5b3bfb484 100644 --- a/examples/shader-ast-evo/index.html +++ b/examples/shader-ast-evo/index.html @@ -13,7 +13,7 @@ diff --git a/examples/shader-ast-noise/index.html b/examples/shader-ast-noise/index.html index f6ef5a8622..ced540c713 100644 --- a/examples/shader-ast-noise/index.html +++ b/examples/shader-ast-noise/index.html @@ -13,7 +13,7 @@ diff --git a/examples/shader-ast-raymarch/index.html b/examples/shader-ast-raymarch/index.html index d593fda01b..62261bd267 100644 --- a/examples/shader-ast-raymarch/index.html +++ b/examples/shader-ast-raymarch/index.html @@ -13,7 +13,7 @@ diff --git a/examples/shader-ast-sdf2d/index.html b/examples/shader-ast-sdf2d/index.html index f1b51a8b62..5c62c6bbc0 100644 --- a/examples/shader-ast-sdf2d/index.html +++ b/examples/shader-ast-sdf2d/index.html @@ -13,7 +13,7 @@ diff --git a/examples/shader-ast-tunnel/index.html b/examples/shader-ast-tunnel/index.html index 0ca8738407..4d4421654e 100644 --- a/examples/shader-ast-tunnel/index.html +++ b/examples/shader-ast-tunnel/index.html @@ -13,7 +13,7 @@ diff --git a/examples/shader-ast-workers/index.html b/examples/shader-ast-workers/index.html index afbcab791d..d5e1bbb25a 100644 --- a/examples/shader-ast-workers/index.html +++ b/examples/shader-ast-workers/index.html @@ -13,7 +13,7 @@ diff --git a/examples/shader-graph/index.html b/examples/shader-graph/index.html index 531c4aed92..dc9032c448 100644 --- a/examples/shader-graph/index.html +++ b/examples/shader-graph/index.html @@ -13,7 +13,7 @@ diff --git a/examples/soa-ecs/index.html b/examples/soa-ecs/index.html index 338e65c055..4febbffc64 100644 --- a/examples/soa-ecs/index.html +++ b/examples/soa-ecs/index.html @@ -14,7 +14,7 @@ diff --git a/examples/stratified-grid/index.html b/examples/stratified-grid/index.html index 4b48c9a2c9..2fc94d56e1 100644 --- a/examples/stratified-grid/index.html +++ b/examples/stratified-grid/index.html @@ -13,7 +13,7 @@ diff --git a/examples/svg-barchart/index.html b/examples/svg-barchart/index.html index cf854a580e..3f7d31415b 100644 --- a/examples/svg-barchart/index.html +++ b/examples/svg-barchart/index.html @@ -13,7 +13,7 @@ diff --git a/examples/svg-particles/index.html b/examples/svg-particles/index.html index b837167c3e..47d2c1fb20 100644 --- a/examples/svg-particles/index.html +++ b/examples/svg-particles/index.html @@ -24,7 +24,7 @@ diff --git a/examples/svg-waveform/index.html b/examples/svg-waveform/index.html index 30f6940d7b..7a4252a809 100644 --- a/examples/svg-waveform/index.html +++ b/examples/svg-waveform/index.html @@ -21,7 +21,7 @@ diff --git a/examples/talk-slides/index.html b/examples/talk-slides/index.html index 6bfce86771..494f18629f 100644 --- a/examples/talk-slides/index.html +++ b/examples/talk-slides/index.html @@ -35,7 +35,7 @@ diff --git a/examples/text-canvas/index.html b/examples/text-canvas/index.html index 4f3842fad1..f410d9f266 100644 --- a/examples/text-canvas/index.html +++ b/examples/text-canvas/index.html @@ -24,7 +24,7 @@ diff --git a/examples/todo-list/index.html b/examples/todo-list/index.html index 6081291ecc..2c7b4dfcd1 100644 --- a/examples/todo-list/index.html +++ b/examples/todo-list/index.html @@ -71,7 +71,7 @@ diff --git a/examples/transducers-hdom/index.html b/examples/transducers-hdom/index.html index 3e13f4989a..1a73e1ed7f 100644 --- a/examples/transducers-hdom/index.html +++ b/examples/transducers-hdom/index.html @@ -13,7 +13,7 @@ diff --git a/examples/triple-query/index.html b/examples/triple-query/index.html index 347a36db78..317ad8c2c6 100644 --- a/examples/triple-query/index.html +++ b/examples/triple-query/index.html @@ -21,7 +21,7 @@ diff --git a/examples/webgl-cube/index.html b/examples/webgl-cube/index.html index 350f891bb3..eba49a7651 100644 --- a/examples/webgl-cube/index.html +++ b/examples/webgl-cube/index.html @@ -13,7 +13,7 @@ diff --git a/examples/webgl-cubemap/index.html b/examples/webgl-cubemap/index.html index 8874e871d3..575a4604b8 100644 --- a/examples/webgl-cubemap/index.html +++ b/examples/webgl-cubemap/index.html @@ -13,7 +13,7 @@ diff --git a/examples/webgl-grid/index.html b/examples/webgl-grid/index.html index 87c373b498..2021d7c600 100644 --- a/examples/webgl-grid/index.html +++ b/examples/webgl-grid/index.html @@ -13,7 +13,7 @@ diff --git a/examples/webgl-msdf/index.html b/examples/webgl-msdf/index.html index 3c15eac8e6..56ff529208 100644 --- a/examples/webgl-msdf/index.html +++ b/examples/webgl-msdf/index.html @@ -13,7 +13,7 @@ diff --git a/examples/webgl-multipass/index.html b/examples/webgl-multipass/index.html index dc13ab9a23..e9dfe571fb 100644 --- a/examples/webgl-multipass/index.html +++ b/examples/webgl-multipass/index.html @@ -13,7 +13,7 @@ diff --git a/examples/webgl-shadertoy/index.html b/examples/webgl-shadertoy/index.html index a9699d68b0..d7dbb07a31 100644 --- a/examples/webgl-shadertoy/index.html +++ b/examples/webgl-shadertoy/index.html @@ -17,7 +17,7 @@ diff --git a/examples/webgl-ssao/index.html b/examples/webgl-ssao/index.html index 338fe3f2dc..265137d644 100644 --- a/examples/webgl-ssao/index.html +++ b/examples/webgl-ssao/index.html @@ -13,7 +13,7 @@ diff --git a/examples/wolfram/index.html b/examples/wolfram/index.html index 2680ebb431..469de447e7 100644 --- a/examples/wolfram/index.html +++ b/examples/wolfram/index.html @@ -13,7 +13,7 @@ diff --git a/examples/xml-converter/index.html b/examples/xml-converter/index.html index 0c6a5de475..76ac0e8b45 100644 --- a/examples/xml-converter/index.html +++ b/examples/xml-converter/index.html @@ -12,7 +12,7 @@ diff --git a/scripts/make-example b/scripts/make-example index 594b7e0920..12fe2f927c 100755 --- a/scripts/make-example +++ b/scripts/make-example @@ -101,7 +101,7 @@ cat << EOF > "$MODULE"/index.html - +
From 57d21296cb23404c920724748cea1b9dad4d710a Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 16:35:48 +0000 Subject: [PATCH 19/71] refactor(examples): update for TS4.1, update pkgs --- examples/commit-table-ssr/package.json | 1 + examples/hdom-dropdown-fuzzy/src/dropdown.ts | 2 +- examples/hdom-vscroller/package.json | 1 + examples/router-basics/src/api.ts | 13 +++++++++++-- examples/router-basics/src/app.ts | 4 ++-- examples/rstream-grid/src/api.ts | 6 ++++-- examples/rstream-grid/src/app.ts | 4 ++-- examples/svg-waveform/src/api.ts | 6 ++++-- examples/svg-waveform/src/app.ts | 4 ++-- examples/triple-query/src/api.ts | 11 +++++++++-- examples/triple-query/src/app.ts | 4 ++-- 11 files changed, 39 insertions(+), 17 deletions(-) diff --git a/examples/commit-table-ssr/package.json b/examples/commit-table-ssr/package.json index 7a07ff9f15..e82737cc9e 100644 --- a/examples/commit-table-ssr/package.json +++ b/examples/commit-table-ssr/package.json @@ -37,6 +37,7 @@ "process": false }, "thi.ng": { + "skip": true, "readme": [ "cache", "hiccup", diff --git a/examples/hdom-dropdown-fuzzy/src/dropdown.ts b/examples/hdom-dropdown-fuzzy/src/dropdown.ts index 5bb2ec8ae4..9d65ff61b9 100644 --- a/examples/hdom-dropdown-fuzzy/src/dropdown.ts +++ b/examples/hdom-dropdown-fuzzy/src/dropdown.ts @@ -99,7 +99,7 @@ export function dropdown(themeCtxPath: Path) { export const dropdownListeners = ( ctx: BaseContext, - basePath: NumOrString[] + basePath: readonly NumOrString[] ) => ({ onmouseover: () => ctx.bus.dispatch([EV_SET_VALUE, [[...basePath, "hover"], true]]), diff --git a/examples/hdom-vscroller/package.json b/examples/hdom-vscroller/package.json index 511a7841f8..322c82841f 100644 --- a/examples/hdom-vscroller/package.json +++ b/examples/hdom-vscroller/package.json @@ -8,6 +8,7 @@ "scripts": { "clean": "rm -rf .cache build out", "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", + "build:webpack": "../../node_modules/.bin/webpack --mode production", "start": "parcel index.html -p 8080 --open --no-cache" }, "devDependencies": { diff --git a/examples/router-basics/src/api.ts b/examples/router-basics/src/api.ts index 382e574bc9..642e93cd4e 100644 --- a/examples/router-basics/src/api.ts +++ b/examples/router-basics/src/api.ts @@ -28,14 +28,23 @@ export interface AppConfig { initialState: any; router: HTMLRouterConfig; ui: UIAttribs; - views: Partial>; + views: Partial>; } +export type AppViewIDs = + | "route" + | "routeComponent" + | "users" + | "userlist" + | "status" + | "debug" + | "json"; + /** * Derived views exposed by the app. * Add more declarations here as needed. */ -export interface AppViews extends Record> { +export interface AppViews extends Record> { route: IView; routeComponent: IView; users: IView>; diff --git a/examples/router-basics/src/app.ts b/examples/router-basics/src/app.ts index e6cddd7de3..ff42d8472c 100644 --- a/examples/router-basics/src/app.ts +++ b/examples/router-basics/src/app.ts @@ -1,4 +1,4 @@ -import type { IObjectOf } from "@thi.ng/api"; +import type { Fn, IObjectOf } from "@thi.ng/api"; import { Atom, defViewUnsafe } from "@thi.ng/atom"; import { isArray } from "@thi.ng/checks"; import { start } from "@thi.ng/hdom"; @@ -85,7 +85,7 @@ export class App { for (let id in specs) { const spec = specs[id]; views[id] = isArray(spec) - ? defViewUnsafe(this.state, spec[0], spec[1]) + ? defViewUnsafe(this.state, spec[0], >spec[1]) : defViewUnsafe(this.state, spec); } } diff --git a/examples/rstream-grid/src/api.ts b/examples/rstream-grid/src/api.ts index 8b6d011c6a..ff3fe683e9 100644 --- a/examples/rstream-grid/src/api.ts +++ b/examples/rstream-grid/src/api.ts @@ -24,14 +24,16 @@ export interface AppConfig { events: IObjectOf; initialState: any; ui: UIAttribs; - views: Partial>; + views: Partial>; } +export type AppViewIDs = "svg" | "cols" | "rows" | "theta" | "stroke"; + /** * Base structure of derived views exposed by the base app. * Add more declarations here as needed. */ -export interface AppViews extends Record> { +export interface AppViews extends Record> { svg: IView; cols: IView; rows: IView; diff --git a/examples/rstream-grid/src/app.ts b/examples/rstream-grid/src/app.ts index 6936c3ef3b..ed0a707c5e 100644 --- a/examples/rstream-grid/src/app.ts +++ b/examples/rstream-grid/src/app.ts @@ -1,4 +1,4 @@ -import type { IObjectOf } from "@thi.ng/api"; +import type { Fn, IObjectOf } from "@thi.ng/api"; import { Atom, Cursor, defViewUnsafe, History } from "@thi.ng/atom"; import { isArray } from "@thi.ng/checks"; import { start } from "@thi.ng/hdom"; @@ -54,7 +54,7 @@ export class App { for (let id in specs) { const spec = specs[id]; views[id] = isArray(spec) - ? defViewUnsafe(this.state, spec[0], spec[1]) + ? defViewUnsafe(this.state, spec[0], >spec[1]) : defViewUnsafe(this.state, spec); } } diff --git a/examples/svg-waveform/src/api.ts b/examples/svg-waveform/src/api.ts index 5edc6a331f..5aa4dd7043 100644 --- a/examples/svg-waveform/src/api.ts +++ b/examples/svg-waveform/src/api.ts @@ -23,14 +23,16 @@ export interface AppConfig { initialState: any; rootComponent: AppComponent; ui: UIAttribs; - views: Partial>; + views: Partial>; } +export type AppViewIDs = "amp" | "freq" | "phase" | "harmonics" | "hstep"; + /** * Base structure of derived views exposed by the base app. * Add more declarations here as needed. */ -export interface AppViews extends Record> { +export interface AppViews extends Record> { amp: IView; freq: IView; phase: IView; diff --git a/examples/svg-waveform/src/app.ts b/examples/svg-waveform/src/app.ts index fd3b30f953..472c44f5aa 100644 --- a/examples/svg-waveform/src/app.ts +++ b/examples/svg-waveform/src/app.ts @@ -1,4 +1,4 @@ -import type { IObjectOf } from "@thi.ng/api"; +import type { Fn, IObjectOf } from "@thi.ng/api"; import { Atom, defViewUnsafe, History } from "@thi.ng/atom"; import { isArray } from "@thi.ng/checks"; import { start } from "@thi.ng/hdom"; @@ -46,7 +46,7 @@ export class App { for (let id in specs) { const spec = specs[id]; views[id] = isArray(spec) - ? defViewUnsafe(this.state, spec[0], spec[1]) + ? defViewUnsafe(this.state, spec[0], >spec[1]) : defViewUnsafe(this.state, spec); } } diff --git a/examples/triple-query/src/api.ts b/examples/triple-query/src/api.ts index d4add7ae75..00bab12138 100644 --- a/examples/triple-query/src/api.ts +++ b/examples/triple-query/src/api.ts @@ -29,7 +29,7 @@ export interface AppConfig { initialState: any; rootComponent: AppComponent; ui: UIAttribs; - views: Partial>; + views: Partial>; data: { cities: string[][]; countries: string[][]; @@ -38,11 +38,18 @@ export interface AppConfig { }; } +export type AppViewIDs = + | "page" + | "pagedTriples" + | "cities" + | "countries" + | "sort"; + /** * Base structure of derived views exposed by the base app. * Add more declarations here as needed. */ -export interface AppViews extends Record> { +export interface AppViews extends Record> { page: IView; pagedTriples: IView; cities: IView; diff --git a/examples/triple-query/src/app.ts b/examples/triple-query/src/app.ts index ce96f8fe51..6345bde93e 100644 --- a/examples/triple-query/src/app.ts +++ b/examples/triple-query/src/app.ts @@ -1,4 +1,4 @@ -import type { IObjectOf } from "@thi.ng/api"; +import type { Fn, IObjectOf } from "@thi.ng/api"; import { Atom, defViewUnsafe } from "@thi.ng/atom"; import { isArray } from "@thi.ng/checks"; import { start } from "@thi.ng/hdom"; @@ -46,7 +46,7 @@ export class App { for (let id in specs) { const spec = specs[id]; views[id] = isArray(spec) - ? defViewUnsafe(this.state, spec[0], spec[1]) + ? defViewUnsafe(this.state, spec[0], >spec[1]) : defViewUnsafe(this.state, spec); } } From fef1948dc15d527dd6882787333a05dcd506b7ff Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 5 Dec 2020 23:33:49 +0000 Subject: [PATCH 20/71] build(examples): switch examples to new snowpack setup --- examples/webgl-cube/.gitignore | 7 +- examples/webgl-cube/package.json | 12 +- examples/webgl-cube/{ => public}/index.html | 2 +- examples/webgl-cube/snowpack.config.js | 14 + examples/webgl-cube/src/index.ts | 7 +- examples/webgl-cube/src/webpack.d.ts | 3 - examples/webgl-cube/tsconfig.json | 11 +- examples/webgl-cube/webpack.config.js | 23 - examples/webgl-cubemap/.gitignore | 7 +- examples/webgl-cubemap/package.json | 12 +- .../{ => public}/assets/golden-gate/negx.jpg | Bin .../{ => public}/assets/golden-gate/negy.jpg | Bin .../{ => public}/assets/golden-gate/negz.jpg | Bin .../{ => public}/assets/golden-gate/posx.jpg | Bin .../{ => public}/assets/golden-gate/posy.jpg | Bin .../{ => public}/assets/golden-gate/posz.jpg | Bin .../assets/golden-gate}/readme.txt | 26 +- .../{ => public}/assets/langholmen2/negx.jpg | Bin .../{ => public}/assets/langholmen2/negy.jpg | Bin .../{ => public}/assets/langholmen2/negz.jpg | Bin .../{ => public}/assets/langholmen2/posx.jpg | Bin .../{ => public}/assets/langholmen2/posy.jpg | Bin .../{ => public}/assets/langholmen2/posz.jpg | Bin .../assets/langholmen2}/readme.txt | 26 +- .../{ => public}/assets/maskonaive2/negx.jpg | Bin .../{ => public}/assets/maskonaive2/negy.jpg | Bin .../{ => public}/assets/maskonaive2/negz.jpg | Bin .../{ => public}/assets/maskonaive2/posx.jpg | Bin .../{ => public}/assets/maskonaive2/posy.jpg | Bin .../{ => public}/assets/maskonaive2/posz.jpg | Bin .../assets/maskonaive2}/readme.txt | 26 +- .../webgl-cubemap/{ => public}/index.html | 2 +- examples/webgl-cubemap/snowpack.config.js | 14 + examples/webgl-cubemap/src/index.ts | 9 +- examples/webgl-cubemap/tsconfig.json | 11 +- examples/webgl-cubemap/webpack.config.js | 23 - examples/webgl-grid/.gitignore | 7 +- examples/webgl-grid/package.json | 13 +- examples/webgl-grid/{ => public}/index.html | 2 +- examples/webgl-grid/snowpack.config.js | 14 + examples/webgl-grid/src/index.ts | 7 +- examples/webgl-grid/tsconfig.json | 11 +- examples/webgl-grid/webpack.config.js | 23 - examples/webgl-msdf/.gitignore | 7 +- examples/webgl-msdf/package.json | 12 +- examples/webgl-msdf/{ => public}/index.html | 2 +- examples/webgl-msdf/snowpack.config.js | 14 + examples/webgl-msdf/src/index.ts | 11 +- .../inputmono-extralight-msdf.json | 0 .../{assets => src}/inputmono-extralight.png | Bin examples/webgl-msdf/src/static.d.ts | 59 + examples/webgl-msdf/src/webpack.d.ts | 4 - examples/webgl-msdf/tsconfig.json | 11 +- examples/webgl-msdf/webpack.config.js | 23 - examples/webgl-multipass/.gitignore | 7 +- examples/webgl-multipass/package.json | 12 +- .../webgl-multipass/{ => public}/index.html | 2 +- examples/webgl-multipass/snowpack.config.js | 14 + examples/webgl-multipass/src/index.ts | 5 - examples/webgl-multipass/tsconfig.json | 11 +- examples/webgl-multipass/webpack.config.js | 23 - examples/webgl-shadertoy/.gitignore | 7 +- examples/webgl-shadertoy/package.json | 12 +- .../webgl-shadertoy/{ => public}/index.html | 2 +- examples/webgl-shadertoy/snowpack.config.js | 14 + examples/webgl-shadertoy/tsconfig.json | 11 +- examples/webgl-shadertoy/webpack.config.js | 23 - examples/webgl-ssao/.gitignore | 7 +- examples/webgl-ssao/package.json | 12 +- examples/webgl-ssao/{ => public}/index.html | 4 +- examples/webgl-ssao/snowpack.config.js | 14 + examples/webgl-ssao/src/index.ts | 9 +- examples/webgl-ssao/tsconfig.json | 11 +- examples/webgl-ssao/webpack.config.js | 23 - examples/wolfram/.gitignore | 7 +- examples/wolfram/package.json | 12 +- examples/wolfram/{ => public}/index.html | 2 +- examples/wolfram/snowpack.config.js | 14 + examples/wolfram/src/index.ts | 15 +- examples/wolfram/tsconfig.json | 11 +- examples/xml-converter/.gitignore | 7 +- examples/xml-converter/package.json | 16 +- .../xml-converter/{ => public}/index.html | 2 +- examples/xml-converter/snowpack.config.js | 14 + examples/xml-converter/src/index.ts | 8 +- examples/xml-converter/src/ui.ts | 2 +- examples/xml-converter/src/utils.ts | 2 +- examples/xml-converter/tsconfig.json | 12 +- examples/xml-converter/webpack.config.js | 23 - package.json | 4 + yarn.lock | 2160 ++++++++++++++++- 91 files changed, 2481 insertions(+), 508 deletions(-) rename examples/webgl-cube/{ => public}/index.html (92%) create mode 100644 examples/webgl-cube/snowpack.config.js delete mode 100644 examples/webgl-cube/src/webpack.d.ts delete mode 100644 examples/webgl-cube/webpack.config.js rename examples/webgl-cubemap/{ => public}/assets/golden-gate/negx.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/golden-gate/negy.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/golden-gate/negz.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/golden-gate/posx.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/golden-gate/posy.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/golden-gate/posz.jpg (100%) rename examples/webgl-cubemap/{assets/langholmen2 => public/assets/golden-gate}/readme.txt (94%) rename examples/webgl-cubemap/{ => public}/assets/langholmen2/negx.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/langholmen2/negy.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/langholmen2/negz.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/langholmen2/posx.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/langholmen2/posy.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/langholmen2/posz.jpg (100%) rename examples/webgl-cubemap/{assets/maskonaive2 => public/assets/langholmen2}/readme.txt (94%) rename examples/webgl-cubemap/{ => public}/assets/maskonaive2/negx.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/maskonaive2/negy.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/maskonaive2/negz.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/maskonaive2/posx.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/maskonaive2/posy.jpg (100%) rename examples/webgl-cubemap/{ => public}/assets/maskonaive2/posz.jpg (100%) rename examples/webgl-cubemap/{assets/golden-gate => public/assets/maskonaive2}/readme.txt (94%) rename examples/webgl-cubemap/{ => public}/index.html (90%) create mode 100644 examples/webgl-cubemap/snowpack.config.js delete mode 100644 examples/webgl-cubemap/webpack.config.js rename examples/webgl-grid/{ => public}/index.html (90%) create mode 100644 examples/webgl-grid/snowpack.config.js delete mode 100644 examples/webgl-grid/webpack.config.js rename examples/webgl-msdf/{ => public}/index.html (90%) create mode 100644 examples/webgl-msdf/snowpack.config.js rename examples/webgl-msdf/{assets => src}/inputmono-extralight-msdf.json (100%) rename examples/webgl-msdf/{assets => src}/inputmono-extralight.png (100%) create mode 100644 examples/webgl-msdf/src/static.d.ts delete mode 100644 examples/webgl-msdf/src/webpack.d.ts delete mode 100644 examples/webgl-msdf/webpack.config.js rename examples/webgl-multipass/{ => public}/index.html (90%) create mode 100644 examples/webgl-multipass/snowpack.config.js delete mode 100644 examples/webgl-multipass/webpack.config.js rename examples/webgl-shadertoy/{ => public}/index.html (92%) create mode 100644 examples/webgl-shadertoy/snowpack.config.js delete mode 100644 examples/webgl-shadertoy/webpack.config.js rename examples/webgl-ssao/{ => public}/index.html (85%) create mode 100644 examples/webgl-ssao/snowpack.config.js delete mode 100644 examples/webgl-ssao/webpack.config.js rename examples/wolfram/{ => public}/index.html (90%) create mode 100644 examples/wolfram/snowpack.config.js rename examples/xml-converter/{ => public}/index.html (94%) create mode 100644 examples/xml-converter/snowpack.config.js delete mode 100644 examples/xml-converter/webpack.config.js diff --git a/examples/webgl-cube/.gitignore b/examples/webgl-cube/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/webgl-cube/.gitignore +++ b/examples/webgl-cube/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/webgl-cube/package.json b/examples/webgl-cube/package.json index 679b044749..325c0f929b 100644 --- a/examples/webgl-cube/package.json +++ b/examples/webgl-cube/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", diff --git a/examples/webgl-cube/index.html b/examples/webgl-cube/public/index.html similarity index 92% rename from examples/webgl-cube/index.html rename to examples/webgl-cube/public/index.html index eba49a7651..707f373089 100644 --- a/examples/webgl-cube/index.html +++ b/examples/webgl-cube/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/webgl-cube/snowpack.config.js b/examples/webgl-cube/snowpack.config.js new file mode 100644 index 0000000000..31e0774caa --- /dev/null +++ b/examples/webgl-cube/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/webgl-cube", + }, +}; diff --git a/examples/webgl-cube/src/index.ts b/examples/webgl-cube/src/index.ts index dc7cb6c124..497738500f 100644 --- a/examples/webgl-cube/src/index.ts +++ b/examples/webgl-cube/src/index.ts @@ -82,9 +82,4 @@ const app = () => { return [canvas, { width: 600, height: 600 }]; }; -const cancel = start(app()); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app()); diff --git a/examples/webgl-cube/src/webpack.d.ts b/examples/webgl-cube/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/webgl-cube/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/webgl-cube/tsconfig.json b/examples/webgl-cube/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/webgl-cube/tsconfig.json +++ b/examples/webgl-cube/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/webgl-cube/webpack.config.js b/examples/webgl-cube/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/webgl-cube/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/webgl-cubemap/.gitignore b/examples/webgl-cubemap/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/webgl-cubemap/.gitignore +++ b/examples/webgl-cubemap/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/webgl-cubemap/package.json b/examples/webgl-cubemap/package.json index 26721e4c8b..f8c6cb2070 100644 --- a/examples/webgl-cubemap/package.json +++ b/examples/webgl-cubemap/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production && cp -r assets out/", - "start": "cp -R assets dist/ && parcel index.html -p 8080 --open" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/adapt-dpi": "latest", diff --git a/examples/webgl-cubemap/assets/golden-gate/negx.jpg b/examples/webgl-cubemap/public/assets/golden-gate/negx.jpg similarity index 100% rename from examples/webgl-cubemap/assets/golden-gate/negx.jpg rename to examples/webgl-cubemap/public/assets/golden-gate/negx.jpg diff --git a/examples/webgl-cubemap/assets/golden-gate/negy.jpg b/examples/webgl-cubemap/public/assets/golden-gate/negy.jpg similarity index 100% rename from examples/webgl-cubemap/assets/golden-gate/negy.jpg rename to examples/webgl-cubemap/public/assets/golden-gate/negy.jpg diff --git a/examples/webgl-cubemap/assets/golden-gate/negz.jpg b/examples/webgl-cubemap/public/assets/golden-gate/negz.jpg similarity index 100% rename from examples/webgl-cubemap/assets/golden-gate/negz.jpg rename to examples/webgl-cubemap/public/assets/golden-gate/negz.jpg diff --git a/examples/webgl-cubemap/assets/golden-gate/posx.jpg b/examples/webgl-cubemap/public/assets/golden-gate/posx.jpg similarity index 100% rename from examples/webgl-cubemap/assets/golden-gate/posx.jpg rename to examples/webgl-cubemap/public/assets/golden-gate/posx.jpg diff --git a/examples/webgl-cubemap/assets/golden-gate/posy.jpg b/examples/webgl-cubemap/public/assets/golden-gate/posy.jpg similarity index 100% rename from examples/webgl-cubemap/assets/golden-gate/posy.jpg rename to examples/webgl-cubemap/public/assets/golden-gate/posy.jpg diff --git a/examples/webgl-cubemap/assets/golden-gate/posz.jpg b/examples/webgl-cubemap/public/assets/golden-gate/posz.jpg similarity index 100% rename from examples/webgl-cubemap/assets/golden-gate/posz.jpg rename to examples/webgl-cubemap/public/assets/golden-gate/posz.jpg diff --git a/examples/webgl-cubemap/assets/langholmen2/readme.txt b/examples/webgl-cubemap/public/assets/golden-gate/readme.txt similarity index 94% rename from examples/webgl-cubemap/assets/langholmen2/readme.txt rename to examples/webgl-cubemap/public/assets/golden-gate/readme.txt index d9bd514116..8b404c2736 100755 --- a/examples/webgl-cubemap/assets/langholmen2/readme.txt +++ b/examples/webgl-cubemap/public/assets/golden-gate/readme.txt @@ -1,13 +1,13 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/examples/webgl-cubemap/assets/langholmen2/negx.jpg b/examples/webgl-cubemap/public/assets/langholmen2/negx.jpg similarity index 100% rename from examples/webgl-cubemap/assets/langholmen2/negx.jpg rename to examples/webgl-cubemap/public/assets/langholmen2/negx.jpg diff --git a/examples/webgl-cubemap/assets/langholmen2/negy.jpg b/examples/webgl-cubemap/public/assets/langholmen2/negy.jpg similarity index 100% rename from examples/webgl-cubemap/assets/langholmen2/negy.jpg rename to examples/webgl-cubemap/public/assets/langholmen2/negy.jpg diff --git a/examples/webgl-cubemap/assets/langholmen2/negz.jpg b/examples/webgl-cubemap/public/assets/langholmen2/negz.jpg similarity index 100% rename from examples/webgl-cubemap/assets/langholmen2/negz.jpg rename to examples/webgl-cubemap/public/assets/langholmen2/negz.jpg diff --git a/examples/webgl-cubemap/assets/langholmen2/posx.jpg b/examples/webgl-cubemap/public/assets/langholmen2/posx.jpg similarity index 100% rename from examples/webgl-cubemap/assets/langholmen2/posx.jpg rename to examples/webgl-cubemap/public/assets/langholmen2/posx.jpg diff --git a/examples/webgl-cubemap/assets/langholmen2/posy.jpg b/examples/webgl-cubemap/public/assets/langholmen2/posy.jpg similarity index 100% rename from examples/webgl-cubemap/assets/langholmen2/posy.jpg rename to examples/webgl-cubemap/public/assets/langholmen2/posy.jpg diff --git a/examples/webgl-cubemap/assets/langholmen2/posz.jpg b/examples/webgl-cubemap/public/assets/langholmen2/posz.jpg similarity index 100% rename from examples/webgl-cubemap/assets/langholmen2/posz.jpg rename to examples/webgl-cubemap/public/assets/langholmen2/posz.jpg diff --git a/examples/webgl-cubemap/assets/maskonaive2/readme.txt b/examples/webgl-cubemap/public/assets/langholmen2/readme.txt similarity index 94% rename from examples/webgl-cubemap/assets/maskonaive2/readme.txt rename to examples/webgl-cubemap/public/assets/langholmen2/readme.txt index d9bd514116..8b404c2736 100755 --- a/examples/webgl-cubemap/assets/maskonaive2/readme.txt +++ b/examples/webgl-cubemap/public/assets/langholmen2/readme.txt @@ -1,13 +1,13 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/examples/webgl-cubemap/assets/maskonaive2/negx.jpg b/examples/webgl-cubemap/public/assets/maskonaive2/negx.jpg similarity index 100% rename from examples/webgl-cubemap/assets/maskonaive2/negx.jpg rename to examples/webgl-cubemap/public/assets/maskonaive2/negx.jpg diff --git a/examples/webgl-cubemap/assets/maskonaive2/negy.jpg b/examples/webgl-cubemap/public/assets/maskonaive2/negy.jpg similarity index 100% rename from examples/webgl-cubemap/assets/maskonaive2/negy.jpg rename to examples/webgl-cubemap/public/assets/maskonaive2/negy.jpg diff --git a/examples/webgl-cubemap/assets/maskonaive2/negz.jpg b/examples/webgl-cubemap/public/assets/maskonaive2/negz.jpg similarity index 100% rename from examples/webgl-cubemap/assets/maskonaive2/negz.jpg rename to examples/webgl-cubemap/public/assets/maskonaive2/negz.jpg diff --git a/examples/webgl-cubemap/assets/maskonaive2/posx.jpg b/examples/webgl-cubemap/public/assets/maskonaive2/posx.jpg similarity index 100% rename from examples/webgl-cubemap/assets/maskonaive2/posx.jpg rename to examples/webgl-cubemap/public/assets/maskonaive2/posx.jpg diff --git a/examples/webgl-cubemap/assets/maskonaive2/posy.jpg b/examples/webgl-cubemap/public/assets/maskonaive2/posy.jpg similarity index 100% rename from examples/webgl-cubemap/assets/maskonaive2/posy.jpg rename to examples/webgl-cubemap/public/assets/maskonaive2/posy.jpg diff --git a/examples/webgl-cubemap/assets/maskonaive2/posz.jpg b/examples/webgl-cubemap/public/assets/maskonaive2/posz.jpg similarity index 100% rename from examples/webgl-cubemap/assets/maskonaive2/posz.jpg rename to examples/webgl-cubemap/public/assets/maskonaive2/posz.jpg diff --git a/examples/webgl-cubemap/assets/golden-gate/readme.txt b/examples/webgl-cubemap/public/assets/maskonaive2/readme.txt similarity index 94% rename from examples/webgl-cubemap/assets/golden-gate/readme.txt rename to examples/webgl-cubemap/public/assets/maskonaive2/readme.txt index d9bd514116..8b404c2736 100755 --- a/examples/webgl-cubemap/assets/golden-gate/readme.txt +++ b/examples/webgl-cubemap/public/assets/maskonaive2/readme.txt @@ -1,13 +1,13 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/examples/webgl-cubemap/index.html b/examples/webgl-cubemap/public/index.html similarity index 90% rename from examples/webgl-cubemap/index.html rename to examples/webgl-cubemap/public/index.html index 575a4604b8..b65240fc5e 100644 --- a/examples/webgl-cubemap/index.html +++ b/examples/webgl-cubemap/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/webgl-cubemap/snowpack.config.js b/examples/webgl-cubemap/snowpack.config.js new file mode 100644 index 0000000000..3e644d8484 --- /dev/null +++ b/examples/webgl-cubemap/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/webgl-cubemap", + }, +}; diff --git a/examples/webgl-cubemap/src/index.ts b/examples/webgl-cubemap/src/index.ts index 979ab3ff72..0f9998a400 100644 --- a/examples/webgl-cubemap/src/index.ts +++ b/examples/webgl-cubemap/src/index.ts @@ -110,7 +110,7 @@ const app = () => { gl.clearColor(bg, bg, bg, 1); gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); draw(model); - } + }, }); return () => [ "div.sans-serif", @@ -148,9 +148,4 @@ const loadCubeMap = (base: string) => ) ); -const cancel = start(app()); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app()); diff --git a/examples/webgl-cubemap/tsconfig.json b/examples/webgl-cubemap/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/webgl-cubemap/tsconfig.json +++ b/examples/webgl-cubemap/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/webgl-cubemap/webpack.config.js b/examples/webgl-cubemap/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/webgl-cubemap/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/webgl-grid/.gitignore b/examples/webgl-grid/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/webgl-grid/.gitignore +++ b/examples/webgl-grid/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/webgl-grid/package.json b/examples/webgl-grid/package.json index 8927853cb7..c72f327d7e 100644 --- a/examples/webgl-grid/package.json +++ b/examples/webgl-grid/package.json @@ -6,16 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "rimraf": "^2.6.3", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/adapt-dpi": "latest", diff --git a/examples/webgl-grid/index.html b/examples/webgl-grid/public/index.html similarity index 90% rename from examples/webgl-grid/index.html rename to examples/webgl-grid/public/index.html index 2021d7c600..cfe1b0a7cc 100644 --- a/examples/webgl-grid/index.html +++ b/examples/webgl-grid/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/webgl-grid/snowpack.config.js b/examples/webgl-grid/snowpack.config.js new file mode 100644 index 0000000000..e7696d4f54 --- /dev/null +++ b/examples/webgl-grid/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/webgl-grid", + }, +}; diff --git a/examples/webgl-grid/src/index.ts b/examples/webgl-grid/src/index.ts index 2a7b75c1a2..0be2a11c2c 100644 --- a/examples/webgl-grid/src/index.ts +++ b/examples/webgl-grid/src/index.ts @@ -109,9 +109,4 @@ const app = () => { ]; }; -const cancel = start(app()); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app()); diff --git a/examples/webgl-grid/tsconfig.json b/examples/webgl-grid/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/webgl-grid/tsconfig.json +++ b/examples/webgl-grid/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/webgl-grid/webpack.config.js b/examples/webgl-grid/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/webgl-grid/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/webgl-msdf/.gitignore b/examples/webgl-msdf/.gitignore index 0c5abcab62..211b157174 100644 --- a/examples/webgl-msdf/.gitignore +++ b/examples/webgl-msdf/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts diff --git a/examples/webgl-msdf/package.json b/examples/webgl-msdf/package.json index 98f21a824c..a0bd359110 100644 --- a/examples/webgl-msdf/package.json +++ b/examples/webgl-msdf/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production && cp -r assets out/", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/adapt-dpi": "latest", diff --git a/examples/webgl-msdf/index.html b/examples/webgl-msdf/public/index.html similarity index 90% rename from examples/webgl-msdf/index.html rename to examples/webgl-msdf/public/index.html index 56ff529208..ac93fe7fd5 100644 --- a/examples/webgl-msdf/index.html +++ b/examples/webgl-msdf/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/webgl-msdf/snowpack.config.js b/examples/webgl-msdf/snowpack.config.js new file mode 100644 index 0000000000..8041c61a60 --- /dev/null +++ b/examples/webgl-msdf/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/webgl-msdf", + }, +}; diff --git a/examples/webgl-msdf/src/index.ts b/examples/webgl-msdf/src/index.ts index 536f614a26..56877341a2 100644 --- a/examples/webgl-msdf/src/index.ts +++ b/examples/webgl-msdf/src/index.ts @@ -52,8 +52,8 @@ import { msdfShader, text, } from "@thi.ng/webgl-msdf"; -import GLYPHS from "../assets/inputmono-extralight-msdf.json"; -import GLYPH_TEX from "../assets/inputmono-extralight.png"; +import GLYPHS from "./inputmono-extralight-msdf.json"; +import GLYPH_TEX from "./inputmono-extralight.png"; const TEXT = `Do not go gentle into that good night, Old age should burn and rave at close of day; @@ -285,9 +285,4 @@ const app = () => { return [canvas, { width: window.innerWidth, height: window.innerHeight }]; }; -const cancel = start(app()); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app()); diff --git a/examples/webgl-msdf/assets/inputmono-extralight-msdf.json b/examples/webgl-msdf/src/inputmono-extralight-msdf.json similarity index 100% rename from examples/webgl-msdf/assets/inputmono-extralight-msdf.json rename to examples/webgl-msdf/src/inputmono-extralight-msdf.json diff --git a/examples/webgl-msdf/assets/inputmono-extralight.png b/examples/webgl-msdf/src/inputmono-extralight.png similarity index 100% rename from examples/webgl-msdf/assets/inputmono-extralight.png rename to examples/webgl-msdf/src/inputmono-extralight.png diff --git a/examples/webgl-msdf/src/static.d.ts b/examples/webgl-msdf/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/webgl-msdf/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/webgl-msdf/src/webpack.d.ts b/examples/webgl-msdf/src/webpack.d.ts deleted file mode 100644 index d9b7d4b9df..0000000000 --- a/examples/webgl-msdf/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.json"; -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/webgl-msdf/tsconfig.json b/examples/webgl-msdf/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/webgl-msdf/tsconfig.json +++ b/examples/webgl-msdf/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/webgl-msdf/webpack.config.js b/examples/webgl-msdf/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/webgl-msdf/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/webgl-multipass/.gitignore b/examples/webgl-multipass/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/webgl-multipass/.gitignore +++ b/examples/webgl-multipass/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/webgl-multipass/package.json b/examples/webgl-multipass/package.json index e5183c8e1a..ab9ee2d11d 100644 --- a/examples/webgl-multipass/package.json +++ b/examples/webgl-multipass/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/pixel": "latest", diff --git a/examples/webgl-multipass/index.html b/examples/webgl-multipass/public/index.html similarity index 90% rename from examples/webgl-multipass/index.html rename to examples/webgl-multipass/public/index.html index e9dfe571fb..cec07586bc 100644 --- a/examples/webgl-multipass/index.html +++ b/examples/webgl-multipass/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/webgl-multipass/snowpack.config.js b/examples/webgl-multipass/snowpack.config.js new file mode 100644 index 0000000000..fd03c38f75 --- /dev/null +++ b/examples/webgl-multipass/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/webgl-multipass", + }, +}; diff --git a/examples/webgl-multipass/src/index.ts b/examples/webgl-multipass/src/index.ts index 45eabd04fa..c2deac1594 100644 --- a/examples/webgl-multipass/src/index.ts +++ b/examples/webgl-multipass/src/index.ts @@ -124,8 +124,3 @@ new PackedBuffer( ).blitCanvas(canv.canvas); toy.start(); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => toy.stop()); -} diff --git a/examples/webgl-multipass/tsconfig.json b/examples/webgl-multipass/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/webgl-multipass/tsconfig.json +++ b/examples/webgl-multipass/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/webgl-multipass/webpack.config.js b/examples/webgl-multipass/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/webgl-multipass/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/webgl-shadertoy/.gitignore b/examples/webgl-shadertoy/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/webgl-shadertoy/.gitignore +++ b/examples/webgl-shadertoy/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/webgl-shadertoy/package.json b/examples/webgl-shadertoy/package.json index fa1eff8a2f..9d30ef74c9 100644 --- a/examples/webgl-shadertoy/package.json +++ b/examples/webgl-shadertoy/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/shader-ast": "latest", diff --git a/examples/webgl-shadertoy/index.html b/examples/webgl-shadertoy/public/index.html similarity index 92% rename from examples/webgl-shadertoy/index.html rename to examples/webgl-shadertoy/public/index.html index d7dbb07a31..b77090d8bc 100644 --- a/examples/webgl-shadertoy/index.html +++ b/examples/webgl-shadertoy/public/index.html @@ -25,6 +25,6 @@
Hold down mouse button to change color theme
- + diff --git a/examples/webgl-shadertoy/snowpack.config.js b/examples/webgl-shadertoy/snowpack.config.js new file mode 100644 index 0000000000..a67e8cc197 --- /dev/null +++ b/examples/webgl-shadertoy/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/webgl-shadertoy", + }, +}; diff --git a/examples/webgl-shadertoy/tsconfig.json b/examples/webgl-shadertoy/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/webgl-shadertoy/tsconfig.json +++ b/examples/webgl-shadertoy/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/webgl-shadertoy/webpack.config.js b/examples/webgl-shadertoy/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/webgl-shadertoy/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/webgl-ssao/.gitignore b/examples/webgl-ssao/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/webgl-ssao/.gitignore +++ b/examples/webgl-ssao/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/webgl-ssao/package.json b/examples/webgl-ssao/package.json index 1509c5eea7..7963357a55 100644 --- a/examples/webgl-ssao/package.json +++ b/examples/webgl-ssao/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", diff --git a/examples/webgl-ssao/index.html b/examples/webgl-ssao/public/index.html similarity index 85% rename from examples/webgl-ssao/index.html rename to examples/webgl-ssao/public/index.html index 265137d644..3c47a6cb2c 100644 --- a/examples/webgl-ssao/index.html +++ b/examples/webgl-ssao/public/index.html @@ -17,8 +17,8 @@ src="https://plausible.io/js/plausible.js" > - +
- + diff --git a/examples/webgl-ssao/snowpack.config.js b/examples/webgl-ssao/snowpack.config.js new file mode 100644 index 0000000000..fcc61f086d --- /dev/null +++ b/examples/webgl-ssao/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/webgl-ssao", + }, +}; diff --git a/examples/webgl-ssao/src/index.ts b/examples/webgl-ssao/src/index.ts index 4621107290..1e6b1154ba 100644 --- a/examples/webgl-ssao/src/index.ts +++ b/examples/webgl-ssao/src/index.ts @@ -195,7 +195,7 @@ const app = () => { }, }); return () => [ - "div.sans-serif.pa3.bg-dark-gray.white", + "div", [canvas, { width: W, height: H }], ["div.fixed.top-0.left-0.z-1.ma3.pa3", fps, " fps"], ["div.mt3", ...CONTROLS], @@ -204,7 +204,8 @@ const app = () => { const cancel = start(app()); -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); +if (import.meta.hot) { + import.meta.hot.accept(() => { + cancel(); + }); } diff --git a/examples/webgl-ssao/tsconfig.json b/examples/webgl-ssao/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/webgl-ssao/tsconfig.json +++ b/examples/webgl-ssao/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/webgl-ssao/webpack.config.js b/examples/webgl-ssao/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/webgl-ssao/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/wolfram/.gitignore b/examples/wolfram/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/wolfram/.gitignore +++ b/examples/wolfram/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/wolfram/package.json b/examples/wolfram/package.json index f31e0afc89..19d7e467b9 100644 --- a/examples/wolfram/package.json +++ b/examples/wolfram/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "rimraf": "^2.6.3", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/dl-asset": "latest", diff --git a/examples/wolfram/index.html b/examples/wolfram/public/index.html similarity index 90% rename from examples/wolfram/index.html rename to examples/wolfram/public/index.html index 469de447e7..8af083ec0a 100644 --- a/examples/wolfram/index.html +++ b/examples/wolfram/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/wolfram/snowpack.config.js b/examples/wolfram/snowpack.config.js new file mode 100644 index 0000000000..4154e57989 --- /dev/null +++ b/examples/wolfram/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/wolfram", + }, +}; diff --git a/examples/wolfram/src/index.ts b/examples/wolfram/src/index.ts index 37b81654f7..3ca22fb930 100644 --- a/examples/wolfram/src/index.ts +++ b/examples/wolfram/src/index.ts @@ -1,4 +1,4 @@ -import { download } from "@thi.ng/dl-asset"; +import { downloadWithMime } from "@thi.ng/dl-asset"; import { dropdown } from "@thi.ng/hdom-components"; import { fromIterable, @@ -131,7 +131,7 @@ const wolfram = sync({ xform: scan(reducer(resetCA, evolveCA)), }); -const main = sync({ +sync({ src: { id: rule, ksize: kernel, @@ -168,10 +168,9 @@ wolfram zip(range2d(WIDTH, WIDTH), flatten(grid)) ) ), - map((obj: string) => download(`ca-${rule.deref()}.obj`, obj)) + map((obj: string) => + downloadWithMime(`ca-${rule.deref()}.obj`, obj, { + mime: "model/obj", + }) + ) ); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} diff --git a/examples/wolfram/tsconfig.json b/examples/wolfram/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/wolfram/tsconfig.json +++ b/examples/wolfram/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/xml-converter/.gitignore b/examples/xml-converter/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/xml-converter/.gitignore +++ b/examples/xml-converter/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/xml-converter/package.json b/examples/xml-converter/package.json index cf73452f6f..50e63d694d 100644 --- a/examples/xml-converter/package.json +++ b/examples/xml-converter/package.json @@ -6,16 +6,10 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "build-cli": "tsc -p tsconfig-cli.json", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build", + "build-cli": "tsc -p tsconfig-cli.json" }, "dependencies": { "@thi.ng/arrays": "latest", @@ -26,7 +20,7 @@ "@thi.ng/strings": "latest", "@thi.ng/transducers": "latest", "@thi.ng/transducers-hdom": "latest", - "commander": "^2.18.0" + "commander": "^6.2.0" }, "browserslist": [ "last 3 Chrome versions" diff --git a/examples/xml-converter/index.html b/examples/xml-converter/public/index.html similarity index 94% rename from examples/xml-converter/index.html rename to examples/xml-converter/public/index.html index 76ac0e8b45..a329da1850 100644 --- a/examples/xml-converter/index.html +++ b/examples/xml-converter/public/index.html @@ -29,6 +29,6 @@

XML / Hiccup converter

>Source code & CLI version - + diff --git a/examples/xml-converter/snowpack.config.js b/examples/xml-converter/snowpack.config.js new file mode 100644 index 0000000000..00c793b486 --- /dev/null +++ b/examples/xml-converter/snowpack.config.js @@ -0,0 +1,14 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/xml-converter", + }, +}; diff --git a/examples/xml-converter/src/index.ts b/examples/xml-converter/src/index.ts index b4a95f3a55..1e20e462bc 100644 --- a/examples/xml-converter/src/index.ts +++ b/examples/xml-converter/src/index.ts @@ -52,7 +52,7 @@ const opts = sync({ }); // main stream combinator to create & update UI -const main = sync({ +sync({ src: { src: inputs.xml, copy: inputs.copyButton, @@ -69,9 +69,3 @@ const main = sync({ // apply to real DOM updateDOM({ ctx: UI }) ); - -// ParcelJS HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} diff --git a/examples/xml-converter/src/ui.ts b/examples/xml-converter/src/ui.ts index e738c6bf09..cd49b75414 100644 --- a/examples/xml-converter/src/ui.ts +++ b/examples/xml-converter/src/ui.ts @@ -1,4 +1,4 @@ -import { Subscription } from "@thi.ng/rstream"; +import type { Subscription } from "@thi.ng/rstream"; import { mapIndexed } from "@thi.ng/transducers"; import { handleTab } from "./utils"; diff --git a/examples/xml-converter/src/utils.ts b/examples/xml-converter/src/utils.ts index 215e56ee2f..6249bdbe06 100644 --- a/examples/xml-converter/src/utils.ts +++ b/examples/xml-converter/src/utils.ts @@ -1,4 +1,4 @@ -import { Subscription } from "@thi.ng/rstream"; +import type { Subscription } from "@thi.ng/rstream"; import { splice } from "@thi.ng/strings"; import { map } from "@thi.ng/transducers"; diff --git a/examples/xml-converter/tsconfig.json b/examples/xml-converter/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/xml-converter/tsconfig.json +++ b/examples/xml-converter/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/xml-converter/webpack.config.js b/examples/xml-converter/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/xml-converter/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/package.json b/package.json index 7e6d98abf3..4c1b29da4b 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,9 @@ "devDependencies": { "@microsoft/api-documenter": "^7.11.3", "@microsoft/api-extractor": "^7.12.0", + "@snowpack/plugin-typescript": "^1.1.1", + "@snowpack/plugin-webpack": "^2.1.2", + "@types/snowpack-env": "^2.3.2", "benchmark": "^2.1.4", "file-loader": "^6.2.0", "gzip-size": "^6.0.0", @@ -17,6 +20,7 @@ "rimraf": "^3.0.2", "rollup": "^2.34.1", "rollup-plugin-cleanup": "^3.2.1", + "snowpack": "^2.18.0", "terser": "^5.5.1", "ts-loader": "^8.0.11", "typescript": "^4.1.2", diff --git a/yarn.lock b/yarn.lock index 01fd3ca6bf..2bf1fd1ae2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,6 +18,33 @@ invariant "^2.2.4" semver "^5.5.0" +"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" + integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== + +"@babel/core@^7.0.0": + version "7.12.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" + integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@^7.4.4", "@babel/core@^7.7.5": version "7.11.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.4.tgz#4301dfdfafa01eeb97f1896c5501a3f0655d4229" @@ -49,6 +76,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" + integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== + dependencies: + "@babel/types" "^7.12.5" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -92,6 +128,16 @@ levenary "^1.1.1" semver "^5.5.0" +"@babel/helper-compilation-targets@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" + integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== + dependencies: + "@babel/compat-data" "^7.12.5" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.14.5" + semver "^5.5.0" + "@babel/helper-create-class-features-plugin@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" @@ -104,6 +150,17 @@ "@babel/helper-replace-supers" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4" +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-create-regexp-features-plugin@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" @@ -113,6 +170,14 @@ "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" + integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + regexpu-core "^4.7.1" + "@babel/helper-define-map@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" @@ -159,6 +224,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== + dependencies: + "@babel/types" "^7.12.7" + "@babel/helper-module-imports@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" @@ -166,6 +238,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + "@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" @@ -179,6 +258,21 @@ "@babel/types" "^7.11.0" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -208,6 +302,15 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/types" "^7.12.1" + "@babel/helper-replace-supers@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" @@ -218,6 +321,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-replace-supers@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + "@babel/helper-simple-access@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" @@ -226,6 +339,13 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-skip-transparent-expression-wrappers@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" @@ -233,6 +353,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" @@ -245,6 +372,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + "@babel/helper-wrap-function@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" @@ -264,6 +396,15 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -278,6 +419,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== +"@babel/parser@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" + integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg== + "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" @@ -287,6 +433,15 @@ "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-proposal-class-properties@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" @@ -295,6 +450,14 @@ "@babel/helper-create-class-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-dynamic-import@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" @@ -303,6 +466,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-proposal-export-namespace-from@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" @@ -311,6 +482,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-json-strings@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" @@ -319,6 +498,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-proposal-logical-assignment-operators@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" @@ -327,6 +514,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" @@ -335,6 +530,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-proposal-numeric-separator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" @@ -343,6 +546,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-proposal-numeric-separator@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" + integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" @@ -352,6 +563,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.10.4" +"@babel/plugin-proposal-object-rest-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" @@ -360,6 +580,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-proposal-optional-chaining@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" @@ -369,6 +597,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" +"@babel/plugin-proposal-optional-chaining@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" + integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-proposal-private-methods@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" @@ -377,6 +614,14 @@ "@babel/helper-create-class-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" @@ -385,6 +630,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-unicode-property-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-async-generators@^7.8.0": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -399,6 +652,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" @@ -483,6 +743,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-top-level-await@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-arrow-functions@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" @@ -490,6 +757,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-async-to-generator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" @@ -499,6 +773,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.10.4" +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" @@ -506,6 +789,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-block-scoping@^7.10.4": version "7.11.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" @@ -513,6 +803,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-classes@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" @@ -527,6 +824,20 @@ "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" @@ -534,6 +845,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-destructuring@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" @@ -541,6 +859,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-destructuring@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" @@ -549,6 +874,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-dotall-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-duplicate-keys@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" @@ -556,6 +889,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" @@ -564,6 +904,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-flow-strip-types@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" @@ -579,6 +927,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-function-name@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" @@ -587,6 +942,14 @@ "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-literals@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" @@ -594,6 +957,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-member-expression-literals@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" @@ -601,6 +971,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-modules-amd@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" @@ -610,6 +987,15 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.10.4", "@babel/plugin-transform-modules-commonjs@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" @@ -620,6 +1006,16 @@ "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" @@ -630,6 +1026,17 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-umd@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" @@ -638,6 +1045,14 @@ "@babel/helper-module-transforms" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" @@ -645,6 +1060,13 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.10.4" +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/plugin-transform-new-target@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" @@ -652,6 +1074,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-object-super@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" @@ -660,6 +1089,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4" +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/plugin-transform-parameters@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" @@ -668,6 +1105,13 @@ "@babel/helper-get-function-arity" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-property-literals@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" @@ -675,6 +1119,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-jsx@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" @@ -692,6 +1143,13 @@ dependencies: regenerator-transform "^0.14.2" +"@babel/plugin-transform-regenerator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== + dependencies: + regenerator-transform "^0.14.2" + "@babel/plugin-transform-reserved-words@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" @@ -699,6 +1157,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-shorthand-properties@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" @@ -706,6 +1171,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-spread@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" @@ -714,6 +1186,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" +"@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-transform-sticky-regex@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" @@ -722,6 +1202,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-regex" "^7.10.4" +"@babel/plugin-transform-sticky-regex@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" + integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-template-literals@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" @@ -730,6 +1217,13 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typeof-symbol@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" @@ -737,6 +1231,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-typeof-symbol@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-unicode-escapes@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" @@ -744,6 +1245,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-unicode-regex@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" @@ -752,6 +1260,86 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.7.tgz#54ea21dbe92caf6f10cb1a0a576adc4ebf094b55" + integrity sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew== + dependencies: + "@babel/compat-data" "^7.12.7" + "@babel/helper-compilation-targets" "^7.12.5" + "@babel/helper-module-imports" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.7" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.7" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.7" + core-js-compat "^3.7.0" + semver "^5.5.0" + "@babel/preset-env@^7.4.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.0.tgz#860ee38f2ce17ad60480c2021ba9689393efb796" @@ -853,6 +1441,15 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/template@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0", "@babel/traverse@^7.4.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" @@ -868,6 +1465,21 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9": + version "7.12.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f" + integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.4.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" @@ -877,6 +1489,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13" + integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" @@ -1720,6 +2341,13 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + "@octokit/auth-token@^2.4.0": version "2.4.2" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a" @@ -1870,6 +2498,71 @@ "@parcel/utils" "^1.11.0" physical-cpu-count "^2.0.0" +"@rollup/plugin-alias@^3.0.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz#bb96cf37fefeb0a953a6566c284855c7d1cd290c" + integrity sha512-hNcQY4bpBUIvxekd26DBPgF7BT4mKVNDF5tBG4Zi+3IgwLxGYRY0itHs9D0oLVwXM5pvJDWJlBQro+au8WaUWw== + dependencies: + slash "^3.0.0" + +"@rollup/plugin-commonjs@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz#169004d56cd0f0a1d0f35915d31a036b0efe281f" + integrity sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-inject@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.2.tgz#55b21bb244a07675f7fdde577db929c82fc17395" + integrity sha512-TSLMA8waJ7Dmgmoc8JfPnwUwVZgLjjIAM6MqeIFqPO2ODK36JqE0Cf2F54UTgCUuW8da93Mvoj75a6KAVWgylw== + dependencies: + "@rollup/pluginutils" "^3.0.4" + estree-walker "^1.0.1" + magic-string "^0.25.5" + +"@rollup/plugin-json@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8" + integrity sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/plugin-replace@^2.3.3": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca" + integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.0.4", "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@rushstack/node-core-library@3.35.1": version "3.35.1" resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.35.1.tgz#f228f010c6ec139c2f363a49dde8faed9a7167fe" @@ -1904,16 +2597,99 @@ colors "~1.2.1" string-argv "~0.3.1" +"@sindresorhus/is@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" + integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== + +"@snowpack/plugin-build-script@^2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@snowpack/plugin-build-script/-/plugin-build-script-2.0.12.tgz#bbb59fedbaae40eed1e3c20f6050659911577897" + integrity sha512-v4Kcmu8x0C5iqPbI8w1vMyT6ZVVeh/Z4LTFeTJx+nLm5VKdQJsLyLarI2YhOuQEGB/RZeR4PxvAJBZn1xcH6Bw== + dependencies: + execa "^4.0.3" + npm-run-path "^4.0.1" + +"@snowpack/plugin-run-script@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@snowpack/plugin-run-script/-/plugin-run-script-2.2.1.tgz#8a564f84c65c1136b9b898ef5a89552cf473a638" + integrity sha512-TuYOtcTrJJnm7oMtAQCZN8/GEXI6Tumtk3MEKNhka/id9LrHdUvaYZ9+yxj/n4hep9/kJ0Y7SlweL32L5Zy0Ow== + dependencies: + execa "^4.0.3" + npm-run-path "^4.0.1" + +"@snowpack/plugin-typescript@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@snowpack/plugin-typescript/-/plugin-typescript-1.1.1.tgz#50b982faa962e33fb07a512ed4cbc16bef67df77" + integrity sha512-qKEPSTI1Q5r8AAklF6Hpt4xKchkIy1EBWbdTi4v3uA2t/eqlpiZXhJyXTEIfOiPE01nQFIUIcgBeufuNMHVXNw== + dependencies: + execa "^4.0.3" + npm-run-path "^4.0.1" + +"@snowpack/plugin-webpack@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@snowpack/plugin-webpack/-/plugin-webpack-2.1.2.tgz#857a1a1ea9bcf76b9c4c5cb4f0dd372938a78e4d" + integrity sha512-i9Ny6lXkVCI5dwyKLuxAma2msUNlDOLZK2HqnAJmFzjwuoCKBx4m9dxfZVPHUTLbvENoW1JFUxGQ+8P3lkw89Q== + dependencies: + "@babel/core" "^7.0.0" + "@babel/preset-env" "^7.12.1" + babel-loader "^8.1.0" + core-js "^3.5.0" + css-loader "^4.3.0" + file-loader "^6.0.0" + glob "^7.1.6" + html-minifier "^4.0.0" + jsdom "^16.2.2" + mini-css-extract-plugin "^1.0.0" + optimize-css-assets-webpack-plugin "^5.0.3" + terser-webpack-plugin "^4.0.0" + webpack "^4.43.0" + webpack-manifest-plugin "^2.2.0" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" + integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== + dependencies: + defer-to-connect "^2.0.0" + "@types/argparse@1.0.38": version "1.0.38" resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== +"@types/cacheable-request@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" + integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" + +"@types/cheerio@^0.22.22": + version "0.22.22" + resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.22.tgz#ae71cf4ca59b8bbaf34c99af7a5d6c8894988f5f" + integrity sha512-05DYX4zU96IBfZFY+t3Mh88nlwSMtmmzSYaQkKN48T495VV1dkHSah6qYyDTN5ngaS0i0VonH37m+RuzSM0YiA== + dependencies: + "@types/node" "*" + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -1922,11 +2698,23 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/json-schema@^7.0.6": +"@types/http-cache-semantics@*": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" + integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== + +"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/keyv@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" + integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== + dependencies: + "@types/node" "*" + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1957,11 +2745,35 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/q@^1.5.1": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/responselike@*", "@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/snowpack-env@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/snowpack-env/-/snowpack-env-2.3.2.tgz#2b7f586ba1de82d1866ecdf9b6792341a7e8d4f4" + integrity sha512-lBChKW/gK0bI5tC+00BqMgOVwJkr+da7+DJasCxgscKgzfJVm7aZgOl84UCDz6tE5bNgo6c8jqQyqW5uxT3KEw== + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -2149,6 +2961,11 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -2162,11 +2979,24 @@ acorn-globals@^4.3.0: acorn "^6.0.1" acorn-walk "^6.0.1" +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + acorn-walk@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + acorn@^6.0.1, acorn@^6.0.4, acorn@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" @@ -2177,6 +3007,11 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== +address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -2226,7 +3061,7 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2506,6 +3341,16 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== +babel-loader@^8.1.0: + version "8.2.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" + integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^1.4.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -2757,6 +3602,17 @@ browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.12.0, browserslist@^4. escalade "^3.0.2" node-releases "^1.1.60" +browserslist@^4.14.5, browserslist@^4.14.7: + version "4.15.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.15.0.tgz#3d48bbca6a3f378e86102ffd017d9a03f122bdb0" + integrity sha512-IJ1iysdMkGmjjYeRlDU8PQejVwxvVO5QOfXH7ylW31GO6LwNRSmm/SgRXtNsEXqMLl2e+2H5eEJ7sfynF8TCaQ== + dependencies: + caniuse-lite "^1.0.30001164" + colorette "^1.2.1" + electron-to-chromium "^1.3.612" + escalade "^3.1.1" + node-releases "^1.1.67" + btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" @@ -2786,6 +3642,11 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +builtin-modules@^3.0.0, builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -2827,6 +3688,29 @@ cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.0, cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2842,6 +3726,29 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-lookup@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" + integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== + +cacheable-request@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" + integrity sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^2.0.0" + +cachedir@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" + integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + caching-transform@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" @@ -2852,6 +3759,14 @@ caching-transform@^4.0.0: package-hash "^4.0.0" write-file-atomic "^3.0.0" +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -2876,6 +3791,19 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + camel-case@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" @@ -2945,6 +3873,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001111: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001119.tgz#99185d04bc00e76a86c9ff731dc5ec8e53aefca1" integrity sha512-Hpwa4obv7EGP+TjkCh/wVvbtNJewxmtg4yVJBLFnxo35vbPapBr138bUWENkb5j5L9JZJ9RXLn4OrXRG/cecPQ== +caniuse-lite@^1.0.30001164: + version "1.0.30001165" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz#32955490d2f60290bb186bb754f2981917fa744f" + integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2983,7 +3916,19 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@3.4.3: +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" + integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.1" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + +chokidar@3.4.3, chokidar@^3.4.0: version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== @@ -3037,6 +3982,11 @@ chownr@^1.1.1, chownr@^1.1.2: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -3057,6 +4007,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +cjs-module-lexer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.0.0.tgz#c125ff0f4ab2c898dda909352f254d55e2213261" + integrity sha512-bLSEjEwg4knnuXt7LIWegvgTOClk6ZonZY6g4CFGBly1EjRqVjTjI8Dwnb/dsu1PwJjYBKxnguE5bRTdk+bFOA== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -3067,7 +4022,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@^4.2.3: +clean-css@^4.2.1, clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== @@ -3123,6 +4078,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -3195,6 +4157,11 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + colors@~1.2.1: version "1.2.5" resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" @@ -3258,6 +4225,13 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compressible@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -3421,11 +4395,24 @@ core-js-compat@^3.6.2: browserslist "^4.8.5" semver "7.0.0" +core-js-compat@^3.7.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.0.tgz#3248c6826f4006793bd637db608bca6e4cd688b1" + integrity sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ== + dependencies: + browserslist "^4.14.7" + semver "7.0.0" + core-js@^2.4.0, core-js@^2.6.5: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== +core-js@^3.5.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce" + integrity sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3441,6 +4428,17 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -3522,6 +4520,24 @@ css-declaration-sorter@^4.0.1: postcss "^7.0.1" timsort "^0.3.0" +css-loader@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== + dependencies: + camelcase "^6.0.0" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^2.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.3" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.1" + semver "^7.3.2" + css-modules-loader-core@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" @@ -3549,6 +4565,16 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + css-selector-tokenizer@^0.7.0: version "0.7.3" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" @@ -3573,6 +4599,11 @@ css-tree@1.0.0-alpha.39: mdn-data "2.0.6" source-map "^0.6.1" +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + css-what@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39" @@ -3658,11 +4689,16 @@ csso@^4.0.2: dependencies: css-tree "1.0.0-alpha.39" -cssom@0.3.x, cssom@^0.3.4: +cssom@0.3.x, cssom@^0.3.4, cssom@~0.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + cssstyle@^1.1.1: version "1.4.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" @@ -3670,6 +4706,13 @@ cssstyle@^1.1.1: dependencies: cssom "0.3.x" +cssstyle@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -3705,6 +4748,15 @@ data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -3718,7 +4770,7 @@ deasync@^0.1.14: bindings "^1.5.0" node-addon-api "^1.7.1" -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -3776,11 +4828,23 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -3791,6 +4855,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + default-require-extensions@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" @@ -3805,6 +4874,11 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +defer-to-connect@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" + integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -3877,6 +4951,14 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= +detect-port@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + dependencies: + address "^1.0.1" + debug "^2.6.0" + dezalgo@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" @@ -3914,12 +4996,20 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1, domelementtype@^1.3.1: +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== @@ -3936,6 +5026,13 @@ domexception@^1.0.1: dependencies: webidl-conversions "^4.0.2" +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -3943,6 +5040,14 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -4023,6 +5128,11 @@ electron-to-chromium@^1.3.523: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.554.tgz#11d0619b927a25f300b787ad7ee1ece91384dde9" integrity sha512-Vtz2dVH5nMtKK4brahmgScwFS8PBnpA4VObYXtlsqN8ZpT9IFelv0Rpflc1+NIILjGVaj6vEiXQbhrs3Pl8O7g== +electron-to-chromium@^1.3.612: + version "1.3.616" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.616.tgz#de63d1c79bb8eb61168774df0c11c9e1af69f9e8" + integrity sha512-CI8L38UN2BEnqXw3/oRIQTmde0LiSeqWSRlPA42ZTYgJQ8fYenzAM2Z3ni+jtILTcrs5aiXZCGJ96Pm+3/yGyQ== + elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" @@ -4079,7 +5189,7 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" -entities@^1.1.1, entities@^1.1.2: +entities@^1.1.1, entities@^1.1.2, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== @@ -4135,6 +5245,29 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" +es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-module-lexer@^0.3.24: + version "0.3.26" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" + integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -4161,11 +5294,21 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +esbuild@^0.8.7: + version "0.8.19" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.19.tgz#773a85175cc911a77d7edae5ebabb55f26a25c43" + integrity sha512-KeLnk6TA7yX+KEz9+eDUigJ6ZG5Z7P1pscYdBjlCMuiOFjtbm7/BCHLpLkxfaMT04KwXbS8Lovrzl9rA5xctQg== + escalade@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4181,7 +5324,7 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.0, escodegen@^1.11.1: +escodegen@^1.11.0, escodegen@^1.11.1, escodegen@^1.14.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -4205,6 +5348,28 @@ escodegen@~1.9.0: optionalDependencies: source-map "~0.6.1" +esinstall@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/esinstall/-/esinstall-0.4.0.tgz#b228ed75919b0b87ca0c28ab28f6888d59b92788" + integrity sha512-aOGbM1/AYSPMBspYmmNcqlhmUEpVh0wEXj6+IKP8W+rdyyXPYzYOEtjilH8XDc9P7UFTeB8VIfdtJiLGQkpDVA== + dependencies: + "@rollup/plugin-alias" "^3.0.1" + "@rollup/plugin-commonjs" "^16.0.0" + "@rollup/plugin-inject" "^4.0.2" + "@rollup/plugin-json" "^4.0.0" + "@rollup/plugin-node-resolve" "^10.0.0" + "@rollup/plugin-replace" "^2.3.3" + cjs-module-lexer "^1.0.0" + es-module-lexer "^0.3.24" + is-builtin-module "^3.0.0" + kleur "^4.1.1" + mkdirp "^1.0.3" + rimraf "^3.0.0" + rollup "^2.34.0" + rollup-plugin-node-polyfills "^0.2.1" + validate-npm-package-name "^3.0.0" + vm2 "^3.9.2" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -4240,12 +5405,22 @@ estree-walker@^0.6.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" + integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: +etag@^1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= @@ -4255,6 +5430,11 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@^4.0.0, eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" @@ -4281,6 +5461,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -4408,7 +5603,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-loader@^6.2.0: +file-loader@^6.0.0, file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== @@ -4452,7 +5647,7 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.2.0: +find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== @@ -4461,7 +5656,7 @@ find-cache-dir@^3.2.0: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== @@ -4522,6 +5717,11 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +follow-redirects@^1.0.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -4579,6 +5779,15 @@ fromentries@^1.2.0: resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.2.1.tgz#64c31665630479bc993cd800d53387920dc61b4d" integrity sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw== +fs-extra@^7.0.0, fs-extra@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -4598,15 +5807,6 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@~7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -4614,6 +5814,13 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -4661,6 +5868,13 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +generic-names@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" + integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== + dependencies: + loader-utils "^1.1.0" + genfun@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" @@ -4676,6 +5890,15 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -4714,6 +5937,13 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -4862,6 +6092,23 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" +got@^11.1.4: + version "11.8.0" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.0.tgz#be0920c3586b07fd94add3b5b27cb28f49e6545f" + integrity sha512-k9noyoIIY9EejuhaBNLyZ31D5328LeqnyPNXJQb2XlJZcKakLqN5m6O/ikhq/0lw56kUYS54fVm+D1x57YC9oQ== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.1" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -5070,6 +6317,13 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -5088,6 +6342,19 @@ html-minifier-terser@^5.1.1: relateurl "^0.2.7" terser "^4.6.3" +html-minifier@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" + integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== + dependencies: + camel-case "^3.0.0" + clean-css "^4.2.1" + commander "^2.19.0" + he "^1.2.0" + param-case "^2.1.1" + relateurl "^0.2.7" + uglify-js "^3.5.1" + html-tags@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-1.2.0.tgz#c78de65b5663aa597989dd2b7ab49200d7e4db98" @@ -5107,7 +6374,7 @@ htmlnano@^0.2.2: terser "^4.8.0" uncss "^0.17.3" -htmlparser2@^3.9.2: +htmlparser2@^3.9.1, htmlparser2@^3.9.2: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -5124,6 +6391,11 @@ http-cache-semantics@^3.8.1: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -5143,6 +6415,15 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -5152,6 +6433,19 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.0-beta.5.2" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" + integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +httpie@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/httpie/-/httpie-1.1.2.tgz#e76a6792c2172446ea6df8805977a6f57bc9615d" + integrity sha512-VQ82oXG95oY1fQw/XecHuvcFBA+lZQ9Vwj1RfLcO8a7HpDd4cc2ukwpJt+TUlFaLUAzZErylxWu6wclJ1rUhUQ== + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -5165,6 +6459,11 @@ https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -5191,6 +6490,13 @@ icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -5221,6 +6527,14 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-fresh@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-lazy@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" @@ -5339,6 +6653,11 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + ip@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -5397,11 +6716,23 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-builtin-module@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.0.0.tgz#137d3d2425023a19a660fb9dd6ddfabe52c03466" + integrity sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw== + dependencies: + builtin-modules "^3.0.0" + is-callable@^1.1.4, is-callable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== +is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -5421,6 +6752,13 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -5463,6 +6801,11 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -5523,6 +6866,16 @@ is-html@^1.1.0: dependencies: html-tags "^1.0.0" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negative-zero@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -5567,7 +6920,24 @@ is-plain-object@^4.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-4.1.1.tgz#1a14d6452cbd50790edc7fdaa0aed5a40a35ebb5" integrity sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA== -is-regex@^1.1.0: +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.1.0, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -5642,6 +7012,13 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -5652,6 +7029,11 @@ isarray@^2.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isbinaryfile@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" + integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -5735,6 +7117,15 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jest-worker@^26.5.0: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + jju@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" @@ -5807,6 +7198,38 @@ jsdom@^14.1.0: ws "^6.1.2" xml-name-validator "^3.0.0" +jsdom@^16.2.2: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" + xml-name-validator "^3.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -5817,6 +7240,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -5877,6 +7305,11 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= +jsonschema@~1.2.5: + version "1.2.11" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.11.tgz#7a799cc2aa5a285d893203e8dc81f5becbfb0e91" + integrity sha512-XNZHs3N1IOa3lPKm//npxMhOdaoPw+MvEV0NIgxcER83GTJcG13rehtWmpBCfEt8DrtYwIkMTs8bdXoYs4fvnQ== + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -5887,6 +7320,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +keyv@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" + integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== + dependencies: + json-buffer "3.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5911,6 +7351,19 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +kleur@^4.1.0, kleur@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.3.tgz#8d262a56d79a137ee1b706e967c0b08a7fef4f4c" + integrity sha512-H1tr8QP2PxFTNwAFM74Mui2b6ovcY9FoxJefgrwxY+OCJcq01k5nvhf4M/KnizzrJvLRap5STUy7dgDV35iUBw== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + lerna@^3.22.1: version "3.22.1" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" @@ -5997,7 +7450,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.2, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -6050,6 +7503,11 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + lodash.clone@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" @@ -6115,7 +7573,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.2.1, lodash@~4.17.15: +"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.15: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -6154,6 +7612,11 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + lower-case@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" @@ -6161,6 +7624,11 @@ lower-case@^2.0.1: dependencies: tslib "^1.10.0" +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -6168,6 +7636,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + lunr@^2.3.9: version "2.3.9" resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" @@ -6185,7 +7660,7 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" -magic-string@^0.25.7: +magic-string@^0.25.3, magic-string@^0.25.5, magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== @@ -6207,7 +7682,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -6358,6 +7833,11 @@ merge-source-map@1.0.4: dependencies: source-map "^0.5.6" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.2.3: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -6403,7 +7883,12 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-types@^2.1.12, mime-types@~2.1.19: +"mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== + +mime-types@^2.1.12, mime-types@^2.1.26, mime-types@~2.1.19: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== @@ -6420,11 +7905,35 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +mini-css-extract-plugin@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.2.tgz#e2c9c0ef3f7c1a516916a3ab7b073a761e5b1d26" + integrity sha512-ofYJgCZNm1TToSv02pGANe1lfb31g7ULwNV5Nt31d2dAnVLxFHoguDUAj6U0BLEO7Nrztq4mdtL1yFDaeW7J+A== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + webpack-sources "^1.1.0" + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -6464,6 +7973,27 @@ minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -6472,6 +8002,13 @@ minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -6479,6 +8016,14 @@ minizlib@^1.2.1: dependencies: minipass "^2.9.0" +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -6510,7 +8055,7 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*: +mkdirp@*, mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -6624,6 +8169,11 @@ nanoid@3.1.12: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -6651,6 +8201,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + no-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" @@ -6741,6 +8298,11 @@ node-releases@^1.1.60: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== +node-releases@^1.1.67: + version "1.1.67" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" + integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg== + nopt@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" @@ -6781,6 +8343,11 @@ normalize-url@^3.0.0, normalize-url@^3.3.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + npm-bundled@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" @@ -6842,6 +8409,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.0, npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -6852,7 +8426,7 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@^1.0.2: +nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== @@ -6864,7 +8438,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.1.3: +nwsapi@^2.1.3, nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== @@ -6926,6 +8500,11 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.8.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + object-inspect@~1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" @@ -6953,6 +8532,26 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -7004,6 +8603,21 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.4: + version "7.3.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" + integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + opn@^5.1.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -7011,6 +8625,14 @@ opn@^5.1.0: dependencies: is-wsl "^1.1.0" +optimize-css-assets-webpack-plugin@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -7066,6 +8688,11 @@ osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-cancelable@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" + integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -7139,6 +8766,13 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-pipe@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" @@ -7151,11 +8785,26 @@ p-queue@^4.0.0: dependencies: eventemitter3 "^3.1.0" +p-queue@^6.2.1, p-queue@^6.6.1: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -7202,6 +8851,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +param-case@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + param-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" @@ -7275,6 +8931,13 @@ parcel-bundler@^1.12.4: v8-compile-cache "^2.0.0" ws "^5.1.1" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.6" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" @@ -7344,6 +9007,18 @@ parse5@5.1.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + dependencies: + "@types/node" "*" + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -7399,7 +9074,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -7425,6 +9100,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pbkdf2@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" @@ -7456,7 +9136,7 @@ physical-cpu-count@^2.0.0: resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -7642,6 +9322,13 @@ postcss-modules-extract-imports@1.1.0: dependencies: postcss "^6.0.1" +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + postcss-modules-local-by-default@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" @@ -7650,6 +9337,16 @@ postcss-modules-local-by-default@1.2.0: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" +postcss-modules-local-by-default@^3.0.2, postcss-modules-local-by-default@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + postcss-modules-scope@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" @@ -7658,6 +9355,14 @@ postcss-modules-scope@1.1.0: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + postcss-modules-values@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" @@ -7666,6 +9371,29 @@ postcss-modules-values@1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-modules@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-3.2.2.tgz#ee390de0f9f18e761e1778dfb9be26685c02c51f" + integrity sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw== + dependencies: + generic-names "^2.0.1" + icss-replace-symbols "^1.1.0" + lodash.camelcase "^4.3.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + string-hash "^1.1.1" + postcss-normalize-charset@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" @@ -7794,6 +9522,16 @@ postcss-selector-parser@^3.0.0: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + postcss-svgo@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" @@ -7818,7 +9556,7 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== @@ -7850,6 +9588,24 @@ postcss@^6.0.1: source-map "^0.6.1" supports-color "^5.4.0" +postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^8.1.8: + version "8.1.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.14.tgz#77d6a5db2fdc0afa918e24af5323a53fb8727f2e" + integrity sha512-KatkyVPBKfENS+c3dpXJoDXnDD5UZs5exAnDksLqaRJPKwYphEPZt4N0m0i049v2/BtWVQibAhxW4ilXXcolpA== + dependencies: + colorette "^1.2.1" + nanoid "^3.1.20" + source-map "^0.6.1" + posthtml-parser@^0.4.0, posthtml-parser@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.2.tgz#a132bbdf0cd4bc199d34f322f5c1599385d7c6c1" @@ -8051,6 +9807,11 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + quote-stream@^1.0.1, quote-stream@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" @@ -8301,6 +10062,18 @@ regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" @@ -8354,7 +10127,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.5: +request-promise-native@^1.0.5, request-promise-native@^1.0.8: version "1.0.9" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== @@ -8363,7 +10136,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0: +request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -8399,6 +10172,16 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-alpn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" + integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -8441,6 +10224,21 @@ resolve@^1.1.5, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, dependencies: path-parse "^1.0.6" +resolve@^1.17.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +responselike@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" + integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== + dependencies: + lowercase-keys "^2.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -8499,14 +10297,30 @@ rollup-plugin-cleanup@^3.2.1: js-cleanup "^1.2.0" rollup-pluginutils "^2.8.2" -rollup-pluginutils@^2.8.2: +rollup-plugin-inject@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4" + integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w== + dependencies: + estree-walker "^0.6.1" + magic-string "^0.25.3" + rollup-pluginutils "^2.8.1" + +rollup-plugin-node-polyfills@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz#53092a2744837164d5b8a28812ba5f3ff61109fd" + integrity sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA== + dependencies: + rollup-plugin-inject "^3.0.0" + +rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" -rollup@^2.34.1: +rollup@^2.23.0, rollup@^2.34.0, rollup@^2.34.1: version "2.34.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.34.1.tgz#a387230df02c58b242794a213dfb68b42de2c8fb" integrity sha512-tGveB6NU5x4MS/iXaIsjfUkEv4hxzJJ4o0FRy5LO62Ndx3R2cmE1qsLYlSfRkvHUUPqWiFoxEm8pRftzh1a5HA== @@ -8566,6 +10380,13 @@ saxes@^3.1.9: dependencies: xmlchars "^2.1.1" +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -8575,6 +10396,15 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.6.5, schema-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + schema-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" @@ -8623,7 +10453,7 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@5.0.1: +serialize-javascript@5.0.1, serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== @@ -8730,7 +10560,7 @@ shelljs@^0.8.4: interpret "^1.0.0" rechoir "^0.6.2" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -8747,11 +10577,30 @@ skip-regex@^1.0.2: resolved "https://registry.yarnpkg.com/skip-regex/-/skip-regex-1.0.2.tgz#ac655d77e7c771ac2b9f37585fea37bff56ad65b" integrity sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA== +skypack@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/skypack/-/skypack-0.1.0.tgz#6e954a08ecbe22b1541a07b80256bf74300a384d" + integrity sha512-VDMc0YLMh1RwLLuvlz0HcwwbN1vUILFD773y/52buwVsKxbsIIJ+bGKJ/01naKXRsr8HYUPV0KAJn47S6OYGLQ== + dependencies: + cacache "^15.0.0" + cachedir "^2.3.0" + got "^11.1.4" + kleur "^4.1.0" + p-queue "^6.2.1" + rimraf "^3.0.0" + rollup "^2.23.0" + validate-npm-package-name "^3.0.0" + slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -8792,6 +10641,54 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +snowpack@^2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/snowpack/-/snowpack-2.18.0.tgz#13591b31305b1a23716483738e0b23cd4f491bcb" + integrity sha512-2uQEcdDZWAjyLUpOfvDI5Br54LoG51Dr3wY7ld/GSBJj+lRqb54dS9S9egBEyT0dAhyyG6/pjLbNX7KEumU+EA== + dependencies: + "@snowpack/plugin-build-script" "^2.0.12" + "@snowpack/plugin-run-script" "^2.2.1" + "@types/cheerio" "^0.22.22" + cacache "^15.0.0" + cachedir "^2.3.0" + cheerio "^1.0.0-rc.3" + chokidar "^3.4.0" + compressible "^2.0.18" + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + detect-port "^1.3.0" + es-module-lexer "^0.3.24" + esbuild "^0.8.7" + esinstall "^0.4.0" + etag "^1.8.1" + execa "^4.0.3" + find-cache-dir "^3.3.1" + find-up "^5.0.0" + glob "^7.1.4" + http-proxy "^1.18.1" + httpie "^1.1.2" + is-plain-object "^5.0.0" + isbinaryfile "^4.0.6" + jsonschema "~1.2.5" + kleur "^4.1.1" + mime-types "^2.1.26" + mkdirp "^1.0.3" + npm-run-path "^4.0.1" + open "^7.0.4" + p-queue "^6.6.1" + postcss "^8.1.8" + postcss-modules "^3.2.2" + resolve-from "^5.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.3" + skypack "^0.1.0" + source-map "^0.7.3" + strip-ansi "^6.0.0" + strip-comments "^2.0.1" + validate-npm-package-name "^3.0.0" + ws "^7.3.0" + yargs-parser "^20.0.0" + socks-proxy-agent@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" @@ -8854,7 +10751,7 @@ source-map@^0.5.0, source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@~0.7.2: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -8950,6 +10847,13 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -9037,6 +10941,11 @@ string-argv@~0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -9147,11 +11056,21 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -9194,7 +11113,7 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -supports-color@7.2.0, supports-color@^7.1.0: +supports-color@7.2.0, supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -9246,7 +11165,7 @@ svgo@^1.0.0, svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-tree@^3.2.2: +symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -9269,6 +11188,18 @@ tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: safe-buffer "^5.1.2" yallist "^3.0.3" +tar@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -9301,6 +11232,21 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" +terser-webpack-plugin@^4.0.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + terser@^3.7.3: version "3.17.0" resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" @@ -9319,7 +11265,7 @@ terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.5.1: +terser@^5.3.4, terser@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== @@ -9461,6 +11407,15 @@ tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -9468,6 +11423,13 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -9608,6 +11570,11 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.2.tgz#8cfa1209fd04199cc8a7f9930ddedb30b0f1912d" integrity sha512-GXCYNwqoo0MbLARghYjxVBxDCnU0tLqN7IPLdHHbibCb1NI5zBkU2EPcy/GaVxc0BtTjqyGXJCINe6JMR2Dpow== +uglify-js@^3.5.1: + version "3.12.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.1.tgz#78307f539f7b9ca5557babb186ea78ad30cc0375" + integrity sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ== + uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -9738,6 +11705,11 @@ upath@^1.1.1, upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -9763,7 +11735,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -9853,7 +11825,12 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -w3c-hr-time@^1.0.1: +vm2@^3.9.2: + version "3.9.2" + resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.2.tgz#a4085d2d88a808a1b3c06d5478c2db3222a9cc30" + integrity sha512-nzyFmHdy2FMg7mYraRytc2jr4QBaUY3TEGe3q3bK8EgS9WC98wxn2jrPxS/ruWm+JGzrEIIeufKweQzVoQEd+Q== + +w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== @@ -9869,6 +11846,13 @@ w3c-xmlserializer@^1.1.2: webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + watchpack-chokidar2@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" @@ -9899,6 +11883,16 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + webpack-cli@^3.3.11: version "3.3.12" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" @@ -9916,7 +11910,17 @@ webpack-cli@^3.3.11: v8-compile-cache "^2.1.1" yargs "^13.3.2" -webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-manifest-plugin@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -9924,6 +11928,35 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" +webpack@^4.43.0: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + webpack@^4.44.1: version "4.44.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" @@ -9974,6 +12007,15 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -10117,12 +12159,17 @@ ws@^6.1.2: dependencies: async-limiter "~1.0.0" +ws@^7.2.3, ws@^7.3.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" + integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.1.1: +xmlchars@^2.1.1, xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== @@ -10142,6 +12189,16 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + yargs-parser@13.1.2, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -10166,6 +12223,11 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.0.0: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" From 9f1c5ed0135fa43aa096c459d49ef18d3a229d19 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 18:06:42 +0000 Subject: [PATCH 21/71] build(examples): switch all examples to new snowpack setup --- examples/adaptive-threshold/.gitignore | 7 +- examples/adaptive-threshold/package.json | 15 +- .../{ => public}/index.html | 2 +- .../adaptive-threshold/snowpack.config.js | 29 + examples/adaptive-threshold/src/api.ts | 2 +- examples/adaptive-threshold/src/index.ts | 2 +- examples/adaptive-threshold/src/static.d.ts | 59 + examples/adaptive-threshold/src/webpack.d.ts | 3 - examples/adaptive-threshold/tsconfig.json | 11 +- examples/adaptive-threshold/webpack.config.js | 23 - examples/async-effect/.gitignore | 7 +- examples/async-effect/package.json | 15 +- examples/async-effect/{ => public}/foo.json | 0 examples/async-effect/{ => public}/index.html | 2 +- examples/async-effect/snowpack.config.js | 29 + examples/async-effect/src/static.d.ts | 59 + examples/async-effect/tsconfig.json | 12 +- examples/bitmap-font/.gitignore | 7 +- examples/bitmap-font/package.json | 16 +- examples/bitmap-font/{ => public}/index.html | 2 +- examples/bitmap-font/snowpack.config.js | 29 + examples/bitmap-font/src/index.ts | 12 +- examples/bitmap-font/src/static.d.ts | 59 + examples/bitmap-font/tsconfig.json | 12 +- examples/bitmap-font/webpack.config.js | 23 - examples/canvas-dial/.gitignore | 7 +- examples/canvas-dial/package.json | 15 +- examples/canvas-dial/{ => public}/index.html | 2 +- examples/canvas-dial/snowpack.config.js | 29 + examples/canvas-dial/src/dial.ts | 2 +- examples/canvas-dial/src/static.d.ts | 59 + examples/canvas-dial/tsconfig.json | 12 +- examples/canvas-dial/webpack.config.js | 23 - examples/cellular-automata/.gitignore | 7 +- examples/cellular-automata/package.json | 14 +- .../cellular-automata/{ => public}/index.html | 2 +- examples/cellular-automata/snowpack.config.js | 29 + examples/cellular-automata/src/static.d.ts | 59 + examples/cellular-automata/tsconfig.json | 12 +- examples/commit-heatmap/README.md | 3 + examples/commit-heatmap/package.json | 8 +- examples/commit-heatmap/src/index.ts | 2 +- examples/commit-table-ssr/package.json | 15 +- examples/crypto-chart/.gitignore | 7 +- examples/crypto-chart/ohlc.json | 1535 +++++++++++++++++ examples/crypto-chart/package.json | 14 +- examples/crypto-chart/{ => public}/index.html | 2 +- examples/crypto-chart/snowpack.config.js | 29 + examples/crypto-chart/src/static.d.ts | 59 + examples/crypto-chart/tsconfig.json | 12 +- examples/devcards/.gitignore | 7 +- examples/devcards/package.json | 14 +- examples/devcards/{ => public}/index.html | 4 +- examples/devcards/snowpack.config.js | 29 + examples/devcards/src/static.d.ts | 59 + examples/devcards/tsconfig.json | 12 +- examples/ellipse-proximity/.gitignore | 10 +- examples/ellipse-proximity/package.json | 15 +- .../ellipse-proximity/{ => public}/index.html | 2 +- examples/ellipse-proximity/snowpack.config.js | 29 + examples/ellipse-proximity/src/static.d.ts | 59 + examples/ellipse-proximity/src/webpack.d.ts | 4 - examples/ellipse-proximity/tsconfig.json | 11 +- examples/ellipse-proximity/webpack.config.js | 23 - examples/fft-synth/.gitignore | 7 +- examples/fft-synth/package.json | 15 +- examples/fft-synth/{ => public}/index.html | 2 +- examples/fft-synth/snowpack.config.js | 29 + examples/fft-synth/src/static.d.ts | 59 + examples/fft-synth/src/webpack.d.ts | 3 - examples/fft-synth/tsconfig.json | 11 +- examples/fft-synth/webpack.config.js | 23 - examples/geom-convex-hull/.gitignore | 8 +- examples/geom-convex-hull/package.json | 15 +- .../geom-convex-hull/{ => public}/index.html | 2 +- examples/geom-convex-hull/snowpack.config.js | 29 + examples/geom-convex-hull/src/static.d.ts | 59 + examples/geom-convex-hull/src/webpack.d.ts | 3 - examples/geom-convex-hull/tsconfig.json | 11 +- examples/geom-convex-hull/webpack.config.js | 23 - examples/geom-fuzz-basics/.gitignore | 10 +- examples/geom-fuzz-basics/package.json | 15 +- .../geom-fuzz-basics/{ => public}/index.html | 2 +- examples/geom-fuzz-basics/snowpack.config.js | 29 + examples/geom-fuzz-basics/src/static.d.ts | 59 + examples/geom-fuzz-basics/src/webpack.d.ts | 4 - examples/geom-fuzz-basics/tsconfig.json | 11 +- examples/geom-fuzz-basics/webpack.config.js | 23 - examples/geom-knn/.gitignore | 7 +- examples/geom-knn/package.json | 14 +- examples/geom-knn/{ => public}/index.html | 2 +- examples/geom-knn/snowpack.config.js | 29 + examples/geom-knn/src/index.ts | 12 +- examples/geom-knn/src/static.d.ts | 59 + examples/geom-knn/tsconfig.json | 12 +- examples/geom-tessel/.gitignore | 7 +- examples/geom-tessel/package.json | 14 +- examples/geom-tessel/{ => public}/index.html | 2 +- examples/geom-tessel/snowpack.config.js | 29 + examples/geom-tessel/src/index.ts | 6 - examples/geom-tessel/src/static.d.ts | 59 + examples/geom-tessel/tsconfig.json | 14 +- examples/geom-voronoi-mst/.gitignore | 7 +- examples/geom-voronoi-mst/package.json | 15 +- .../geom-voronoi-mst/{ => public}/index.html | 4 +- examples/geom-voronoi-mst/snowpack.config.js | 29 + examples/geom-voronoi-mst/src/index.ts | 4 +- examples/geom-voronoi-mst/src/static.d.ts | 59 + examples/geom-voronoi-mst/tsconfig.json | 11 +- examples/geom-voronoi-mst/webpack.config.js | 23 - examples/gesture-analysis/.gitignore | 7 +- examples/gesture-analysis/package.json | 15 +- .../gesture-analysis/{ => public}/index.html | 2 +- examples/gesture-analysis/snowpack.config.js | 29 + examples/gesture-analysis/src/static.d.ts | 59 + examples/gesture-analysis/tsconfig.json | 12 +- examples/gesture-analysis/webpack.config.js | 23 - examples/grid-iterators/.gitignore | 7 +- examples/grid-iterators/package.json | 15 +- .../grid-iterators/{ => public}/index.html | 2 +- examples/grid-iterators/snowpack.config.js | 29 + examples/grid-iterators/src/static.d.ts | 59 + examples/grid-iterators/src/webpack.d.ts | 3 - examples/grid-iterators/tsconfig.json | 11 +- examples/grid-iterators/webpack.config.js | 23 - examples/hdom-basics/.gitignore | 7 +- examples/hdom-basics/package.json | 14 +- examples/hdom-basics/{ => public}/index.html | 2 +- examples/hdom-basics/snowpack.config.js | 29 + examples/hdom-basics/src/static.d.ts | 59 + examples/hdom-basics/tsconfig.json | 12 +- examples/hdom-benchmark/.gitignore | 7 +- examples/hdom-benchmark/package.json | 14 +- .../hdom-benchmark/{ => public}/index.html | 2 +- examples/hdom-benchmark/snowpack.config.js | 29 + examples/hdom-benchmark/src/static.d.ts | 59 + examples/hdom-benchmark/tsconfig.json | 12 +- examples/hdom-benchmark/webpack.config.js | 23 - examples/hdom-benchmark2/.gitignore | 7 +- examples/hdom-benchmark2/package.json | 14 +- .../hdom-benchmark2/{ => public}/index.html | 2 +- examples/hdom-benchmark2/snowpack.config.js | 29 + examples/hdom-benchmark2/src/index.ts | 7 +- examples/hdom-benchmark2/src/static.d.ts | 59 + examples/hdom-benchmark2/tsconfig.json | 12 +- examples/hdom-benchmark2/webpack.config.js | 23 - examples/hdom-canvas-clock/.gitignore | 7 +- examples/hdom-canvas-clock/package.json | 14 +- .../hdom-canvas-clock/{ => public}/index.html | 2 +- examples/hdom-canvas-clock/snowpack.config.js | 29 + examples/hdom-canvas-clock/src/index.ts | 7 +- examples/hdom-canvas-clock/src/static.d.ts | 59 + examples/hdom-canvas-clock/tsconfig.json | 12 +- examples/hdom-canvas-draw/.gitignore | 7 +- examples/hdom-canvas-draw/package.json | 14 +- .../hdom-canvas-draw/{ => public}/index.html | 2 +- examples/hdom-canvas-draw/snowpack.config.js | 29 + examples/hdom-canvas-draw/src/index.ts | 7 +- examples/hdom-canvas-draw/src/static.d.ts | 59 + examples/hdom-canvas-draw/tsconfig.json | 12 +- examples/hdom-canvas-particles/.gitignore | 7 +- examples/hdom-canvas-particles/package.json | 15 +- .../{ => public}/index.html | 2 +- .../hdom-canvas-particles/snowpack.config.js | 29 + examples/hdom-canvas-particles/src/index.ts | 7 +- .../hdom-canvas-particles/src/static.d.ts | 59 + .../hdom-canvas-particles/src/webpack.d.ts | 3 - examples/hdom-canvas-particles/tsconfig.json | 11 +- .../hdom-canvas-particles/webpack.config.js | 23 - examples/hdom-canvas-shapes/.gitignore | 7 +- examples/hdom-canvas-shapes/package.json | 14 +- .../{ => public}/index.html | 2 +- .../hdom-canvas-shapes/snowpack.config.js | 29 + examples/hdom-canvas-shapes/src/index.ts | 16 +- .../{assets => src}/logo-64.png | Bin examples/hdom-canvas-shapes/src/static.d.ts | 59 + examples/hdom-canvas-shapes/tsconfig.json | 12 +- examples/hdom-dropdown-fuzzy/.gitignore | 7 +- examples/hdom-dropdown-fuzzy/package.json | 15 +- .../{ => public}/index.html | 2 +- .../hdom-dropdown-fuzzy/snowpack.config.js | 29 + examples/hdom-dropdown-fuzzy/src/static.d.ts | 59 + examples/hdom-dropdown-fuzzy/tsconfig.json | 12 +- .../hdom-dropdown-fuzzy/webpack.config.js | 23 - examples/hdom-dropdown/.gitignore | 7 +- examples/hdom-dropdown/package.json | 15 +- .../hdom-dropdown/{ => public}/index.html | 2 +- examples/hdom-dropdown/snowpack.config.js | 29 + examples/hdom-dropdown/src/static.d.ts | 59 + examples/hdom-dropdown/tsconfig.json | 12 +- examples/hdom-dropdown/webpack.config.js | 23 - examples/hdom-dyn-context/.gitignore | 7 +- examples/hdom-dyn-context/package.json | 14 +- .../hdom-dyn-context/{ => public}/index.html | 2 +- examples/hdom-dyn-context/snowpack.config.js | 29 + examples/hdom-dyn-context/src/index.ts | 8 +- examples/hdom-dyn-context/src/static.d.ts | 59 + examples/hdom-dyn-context/tsconfig.json | 12 +- examples/hdom-elm/.gitignore | 7 +- examples/hdom-elm/package.json | 15 +- examples/hdom-elm/{ => public}/index.html | 2 +- examples/hdom-elm/snowpack.config.js | 29 + examples/hdom-elm/src/static.d.ts | 59 + examples/hdom-elm/tsconfig.json | 11 +- examples/hdom-elm/webpack.config.js | 23 - examples/hdom-inner-html/.gitignore | 7 +- examples/hdom-inner-html/package.json | 15 +- .../hdom-inner-html/{ => public}/index.html | 2 +- examples/hdom-inner-html/snowpack.config.js | 29 + examples/hdom-inner-html/src/index.ts | 8 +- examples/hdom-inner-html/src/static.d.ts | 59 + examples/hdom-inner-html/tsconfig.json | 11 +- examples/hdom-local-render/.gitignore | 7 +- examples/hdom-local-render/package.json | 15 +- .../hdom-local-render/{ => public}/index.html | 2 +- examples/hdom-local-render/snowpack.config.js | 29 + examples/hdom-local-render/src/static.d.ts | 59 + examples/hdom-local-render/src/webpack.d.ts | 3 - examples/hdom-local-render/tsconfig.json | 11 +- examples/hdom-local-render/webpack.config.js | 23 - examples/hdom-localstate/.gitignore | 7 +- examples/hdom-localstate/package.json | 14 +- .../hdom-localstate/{ => public}/index.html | 2 +- examples/hdom-localstate/snowpack.config.js | 29 + examples/hdom-localstate/src/index.ts | 7 +- examples/hdom-localstate/src/static.d.ts | 59 + examples/hdom-localstate/tsconfig.json | 11 +- examples/hdom-skip-nested/.gitignore | 7 +- examples/hdom-skip-nested/package.json | 15 +- .../hdom-skip-nested/{ => public}/index.html | 2 +- examples/hdom-skip-nested/snowpack.config.js | 29 + examples/hdom-skip-nested/src/index.ts | 9 +- examples/hdom-skip-nested/src/static.d.ts | 59 + examples/hdom-skip-nested/src/webpack.d.ts | 3 - examples/hdom-skip-nested/tsconfig.json | 11 +- examples/hdom-skip-nested/webpack.config.js | 23 - examples/hdom-skip/.gitignore | 7 +- examples/hdom-skip/package.json | 14 +- examples/hdom-skip/{ => public}/index.html | 2 +- examples/hdom-skip/snowpack.config.js | 29 + examples/hdom-skip/src/index.ts | 8 +- examples/hdom-skip/src/static.d.ts | 59 + examples/hdom-skip/tsconfig.json | 12 +- examples/hdom-theme-adr-0003/.gitignore | 7 +- examples/hdom-theme-adr-0003/package.json | 14 +- .../{ => public}/index.html | 2 +- .../hdom-theme-adr-0003/snowpack.config.js | 29 + examples/hdom-theme-adr-0003/src/static.d.ts | 59 + examples/hdom-theme-adr-0003/tsconfig.json | 12 +- examples/hdom-toggle/.gitignore | 10 +- examples/hdom-toggle/package.json | 15 +- examples/hdom-toggle/{ => public}/index.html | 2 +- examples/hdom-toggle/snowpack.config.js | 29 + examples/hdom-toggle/src/index.ts | 7 +- examples/hdom-toggle/src/static.d.ts | 59 + examples/hdom-toggle/src/webpack.d.ts | 4 - examples/hdom-toggle/tsconfig.json | 11 +- examples/hdom-toggle/webpack.config.js | 23 - examples/hdom-vscroller/.gitignore | 7 +- examples/hdom-vscroller/package.json | 16 +- .../hdom-vscroller/{ => public}/index.html | 2 +- examples/hdom-vscroller/snowpack.config.js | 29 + examples/hdom-vscroller/src/index.ts | 11 +- examples/hdom-vscroller/src/static.d.ts | 59 + examples/hdom-vscroller/src/webpack.d.ts | 4 - examples/hdom-vscroller/tsconfig.json | 12 +- examples/hdom-vscroller/webpack.config.js | 23 - examples/hiccup-canvas-arcs/.gitignore | 10 +- examples/hiccup-canvas-arcs/package.json | 15 +- .../{ => public}/index.html | 2 +- .../hiccup-canvas-arcs/snowpack.config.js | 29 + examples/hiccup-canvas-arcs/src/static.d.ts | 59 + examples/hiccup-canvas-arcs/src/webpack.d.ts | 4 - examples/hiccup-canvas-arcs/tsconfig.json | 11 +- examples/hiccup-canvas-arcs/webpack.config.js | 23 - examples/hydrate-basics/.gitignore | 7 +- examples/hydrate-basics/package.json | 14 +- .../hydrate-basics/{ => public}/index.html | 2 +- examples/hydrate-basics/snowpack.config.js | 29 + examples/hydrate-basics/src/static.d.ts | 59 + examples/hydrate-basics/tsconfig.json | 12 +- examples/imgui-basics/.gitignore | 10 +- examples/imgui-basics/package.json | 15 +- examples/imgui-basics/{ => public}/index.html | 2 +- examples/imgui-basics/snowpack.config.js | 29 + examples/imgui-basics/src/static.d.ts | 59 + examples/imgui-basics/src/webpack.d.ts | 4 - examples/imgui-basics/tsconfig.json | 11 +- examples/imgui-basics/webpack.config.js | 23 - examples/imgui/.gitignore | 7 +- examples/imgui/package.json | 15 +- examples/imgui/{ => public}/index.html | 2 +- examples/imgui/snowpack.config.js | 29 + examples/imgui/src/index.ts | 6 - examples/imgui/src/static.d.ts | 59 + examples/imgui/src/webpack.d.ts | 3 - examples/imgui/tsconfig.json | 11 +- examples/imgui/webpack.config.js | 21 - examples/interceptor-basics/.gitignore | 7 +- examples/interceptor-basics/package.json | 14 +- .../{ => public}/index.html | 2 +- .../interceptor-basics/snowpack.config.js | 29 + examples/interceptor-basics/src/static.d.ts | 59 + examples/interceptor-basics/tsconfig.json | 12 +- examples/interceptor-basics2/.gitignore | 7 +- examples/interceptor-basics2/package.json | 14 +- .../{ => public}/index.html | 2 +- .../interceptor-basics2/snowpack.config.js | 29 + examples/interceptor-basics2/src/static.d.ts | 59 + examples/interceptor-basics2/tsconfig.json | 12 +- examples/iso-plasma/.gitignore | 7 +- examples/iso-plasma/package.json | 15 +- examples/iso-plasma/{ => public}/index.html | 2 +- examples/iso-plasma/snowpack.config.js | 29 + examples/iso-plasma/src/index.ts | 8 +- examples/iso-plasma/src/static.d.ts | 59 + examples/iso-plasma/tsconfig.json | 11 +- examples/json-components/.gitignore | 7 +- examples/json-components/package.json | 14 +- .../{ => public}/assets/editme.png | Bin .../json-components/{ => public}/index.html | 2 +- examples/json-components/snowpack.config.js | 29 + examples/json-components/src/static.d.ts | 59 + examples/json-components/tsconfig.json | 12 +- examples/login-form/.gitignore | 7 +- examples/login-form/package.json | 14 +- examples/login-form/{ => public}/index.html | 2 +- examples/login-form/snowpack.config.js | 29 + examples/login-form/src/index.ts | 6 +- examples/login-form/src/static.d.ts | 59 + examples/login-form/tsconfig.json | 12 +- examples/markdown/.gitignore | 7 +- examples/markdown/package.json | 15 +- examples/markdown/{ => public}/index.html | 2 +- examples/markdown/snowpack.config.js | 29 + .../markdown/{README.txt => src/README.md} | 0 examples/markdown/src/index.ts | 14 +- examples/markdown/src/static.d.ts | 64 + examples/markdown/src/webpack.d.ts | 2 - examples/markdown/tsconfig.json | 12 +- examples/multitouch/.gitignore | 7 +- examples/multitouch/package.json | 15 +- examples/multitouch/{ => public}/index.html | 2 +- examples/multitouch/snowpack.config.js | 29 + examples/multitouch/src/static.d.ts | 59 + examples/multitouch/src/webpack.d.ts | 3 - examples/multitouch/tsconfig.json | 11 +- examples/multitouch/webpack.config.js | 23 - examples/package-stats/package.json | 9 +- examples/parse-playground/.gitignore | 10 +- examples/parse-playground/package.json | 15 +- .../parse-playground/{ => public}/index.html | 2 +- examples/parse-playground/snowpack.config.js | 29 + examples/parse-playground/src/static.d.ts | 59 + examples/parse-playground/src/webpack.d.ts | 4 - examples/parse-playground/tsconfig.json | 11 +- examples/parse-playground/webpack.config.js | 23 - examples/pixel-basics/.gitignore | 7 +- examples/pixel-basics/package.json | 15 +- examples/pixel-basics/{ => public}/index.html | 2 +- examples/pixel-basics/snowpack.config.js | 29 + examples/pixel-basics/src/debug.png | Bin 0 -> 137 bytes .../pixel-basics/{assets => src}/haystack.jpg | Bin examples/pixel-basics/src/index.ts | 4 +- .../pixel-basics/{assets => src}/logo-64.png | Bin examples/pixel-basics/src/static.d.ts | 59 + examples/pixel-basics/src/webpack.d.ts | 2 - examples/pixel-basics/tsconfig.json | 11 +- examples/pixel-basics/webpack.config.js | 23 - examples/pointfree-svg/package.json | 6 +- examples/poisson-circles/.gitignore | 10 +- examples/poisson-circles/package.json | 15 +- .../poisson-circles/{ => public}/index.html | 2 +- examples/poisson-circles/snowpack.config.js | 29 + examples/poisson-circles/src/static.d.ts | 59 + examples/poisson-circles/src/webpack.d.ts | 4 - examples/poisson-circles/tsconfig.json | 11 +- examples/poisson-circles/webpack.config.js | 23 - examples/poly-spline/.gitignore | 7 +- examples/poly-spline/package.json | 15 +- examples/poly-spline/{ => public}/index.html | 2 +- examples/poly-spline/snowpack.config.js | 29 + examples/poly-spline/src/index.ts | 10 +- examples/poly-spline/src/static.d.ts | 59 + examples/poly-spline/tsconfig.json | 11 +- examples/poly-spline/webpack.config.js | 23 - examples/porter-duff/.gitignore | 7 +- examples/porter-duff/package.json | 15 +- examples/porter-duff/{ => public}/index.html | 2 +- examples/porter-duff/snowpack.config.js | 29 + examples/porter-duff/src/index.ts | 9 +- examples/porter-duff/{assets => src}/plus.png | Bin examples/porter-duff/{assets => src}/ring.png | Bin examples/porter-duff/src/static.d.ts | 59 + examples/porter-duff/src/webpack.d.ts | 3 - examples/porter-duff/tsconfig.json | 11 +- examples/porter-duff/webpack.config.js | 23 - examples/ramp-synth/.gitignore | 7 +- examples/ramp-synth/package.json | 15 +- examples/ramp-synth/{ => public}/index.html | 2 +- examples/ramp-synth/snowpack.config.js | 29 + examples/ramp-synth/src/static.d.ts | 59 + examples/ramp-synth/tsconfig.json | 11 +- examples/ramp-synth/webpack.config.js | 23 - examples/rdom-basics/.gitignore | 10 +- examples/rdom-basics/package.json | 16 +- examples/rdom-basics/{ => public}/index.html | 2 +- examples/rdom-basics/snowpack.config.js | 29 + examples/rdom-basics/src/static.d.ts | 59 + examples/rdom-basics/src/webpack.d.ts | 4 - examples/rdom-basics/tsconfig.json | 11 +- examples/rdom-basics/webpack.config.js | 23 - examples/rdom-dnd/.gitignore | 10 +- examples/rdom-dnd/package.json | 15 +- examples/rdom-dnd/{ => public}/index.html | 2 +- examples/rdom-dnd/snowpack.config.js | 29 + examples/rdom-dnd/src/static.d.ts | 59 + examples/rdom-dnd/src/webpack.d.ts | 4 - examples/rdom-dnd/tsconfig.json | 11 +- examples/rdom-dnd/webpack.config.js | 23 - examples/rdom-lissajous/.gitignore | 10 +- examples/rdom-lissajous/package.json | 15 +- .../rdom-lissajous/{ => public}/index.html | 2 +- examples/rdom-lissajous/snowpack.config.js | 29 + examples/rdom-lissajous/src/static.d.ts | 59 + examples/rdom-lissajous/src/webpack.d.ts | 4 - examples/rdom-lissajous/tsconfig.json | 11 +- examples/rdom-lissajous/webpack.config.js | 23 - examples/rdom-search-docs/.gitignore | 10 +- examples/rdom-search-docs/package.json | 15 +- .../rdom-search-docs/{ => public}/index.html | 2 +- examples/rdom-search-docs/snowpack.config.js | 29 + examples/rdom-search-docs/src/static.d.ts | 59 + examples/rdom-search-docs/src/webpack.d.ts | 4 - examples/rdom-search-docs/tsconfig.json | 11 +- examples/rdom-search-docs/webpack.config.js | 23 - examples/rdom-svg-nodes/.gitignore | 10 +- examples/rdom-svg-nodes/package.json | 15 +- .../rdom-svg-nodes/{ => public}/index.html | 2 +- examples/rdom-svg-nodes/snowpack.config.js | 29 + examples/rdom-svg-nodes/src/static.d.ts | 59 + examples/rdom-svg-nodes/src/webpack.d.ts | 4 - examples/rdom-svg-nodes/tsconfig.json | 11 +- examples/rdom-svg-nodes/webpack.config.js | 23 - examples/rotating-voronoi/.gitignore | 7 +- examples/rotating-voronoi/dist/index.html | 16 - examples/rotating-voronoi/package.json | 15 +- .../rotating-voronoi/{ => public}/index.html | 2 +- examples/rotating-voronoi/snowpack.config.js | 29 + examples/rotating-voronoi/src/index.ts | 8 +- examples/rotating-voronoi/src/static.d.ts | 59 + examples/rotating-voronoi/tsconfig.json | 11 +- examples/rotating-voronoi/webpack.config.js | 23 - examples/router-basics/.gitignore | 7 +- examples/router-basics/package.json | 16 +- .../{ => public}/assets/manomine-1.jpg | Bin .../{ => public}/assets/manomine-2.jpg | Bin .../{ => public}/assets/manomine-3.jpg | Bin .../{ => public}/assets/user-1.json | 0 .../{ => public}/assets/user-2.json | 0 .../{ => public}/assets/users.json | 0 .../router-basics/{ => public}/index.html | 2 +- examples/router-basics/snowpack.config.js | 29 + examples/router-basics/src/api.ts | 2 +- examples/router-basics/src/static.d.ts | 59 + examples/router-basics/tsconfig.json | 12 +- examples/router-basics/webpack.config.js | 23 - examples/rstream-dataflow/.gitignore | 7 +- examples/rstream-dataflow/package.json | 15 +- .../rstream-dataflow/{ => public}/index.html | 2 +- examples/rstream-dataflow/snowpack.config.js | 29 + examples/rstream-dataflow/src/index.ts | 10 +- examples/rstream-dataflow/src/static.d.ts | 59 + examples/rstream-dataflow/tsconfig.json | 12 +- examples/rstream-dataflow/webpack.config.js | 23 - examples/rstream-event-loop/.gitignore | 7 +- examples/rstream-event-loop/package.json | 15 +- .../{ => public}/index.html | 2 +- .../rstream-event-loop/snowpack.config.js | 29 + examples/rstream-event-loop/src/static.d.ts | 59 + examples/rstream-event-loop/tsconfig.json | 11 +- examples/rstream-event-loop/webpack.config.js | 23 - examples/rstream-grid/.gitignore | 7 +- examples/rstream-grid/notes.md | 15 + examples/rstream-grid/package.json | 16 +- examples/rstream-grid/{ => public}/index.html | 2 +- examples/rstream-grid/snowpack.config.js | 29 + examples/rstream-grid/src/api.ts | 2 +- examples/rstream-grid/src/dataflow.ts | 2 +- examples/rstream-grid/src/index.ts | 12 +- examples/rstream-grid/src/static.d.ts | 59 + examples/rstream-grid/tsconfig.json | 12 +- examples/rstream-grid/webpack.config.js | 23 - examples/rstream-hdom/.gitignore | 7 +- examples/rstream-hdom/package.json | 14 +- examples/rstream-hdom/{ => public}/index.html | 2 +- examples/rstream-hdom/snowpack.config.js | 29 + examples/rstream-hdom/src/static.d.ts | 59 + examples/rstream-hdom/tsconfig.json | 12 +- examples/rstream-spreadsheet/.gitignore | 7 +- examples/rstream-spreadsheet/package.json | 15 +- .../{ => public}/index.html | 2 +- .../rstream-spreadsheet/snowpack.config.js | 29 + examples/rstream-spreadsheet/src/index.ts | 10 +- examples/rstream-spreadsheet/src/static.d.ts | 59 + examples/rstream-spreadsheet/src/webpack.d.ts | 3 - examples/rstream-spreadsheet/tsconfig.json | 11 +- .../rstream-spreadsheet/webpack.config.js | 23 - examples/scenegraph-image/.gitignore | 7 +- examples/scenegraph-image/package.json | 15 +- .../scenegraph-image/{ => public}/index.html | 2 +- examples/scenegraph-image/snowpack.config.js | 29 + examples/scenegraph-image/src/index.ts | 9 +- .../{assets => src}/logo-256.png | Bin examples/scenegraph-image/src/static.d.ts | 59 + examples/scenegraph-image/src/webpack.d.ts | 2 - examples/scenegraph-image/tsconfig.json | 11 +- examples/scenegraph-image/webpack.config.js | 23 - examples/scenegraph/.gitignore | 7 +- examples/scenegraph/package.json | 15 +- examples/scenegraph/{ => public}/index.html | 2 +- examples/scenegraph/snowpack.config.js | 29 + examples/scenegraph/src/index.ts | 7 +- examples/scenegraph/src/static.d.ts | 59 + examples/scenegraph/tsconfig.json | 11 +- examples/scenegraph/webpack.config.js | 23 - examples/search/package.json | 27 + examples/shader-ast-canvas2d/.gitignore | 7 +- examples/shader-ast-canvas2d/package.json | 14 +- .../{ => public}/index.html | 2 +- .../shader-ast-canvas2d/snowpack.config.js | 29 + examples/shader-ast-canvas2d/src/static.d.ts | 59 + examples/shader-ast-canvas2d/tsconfig.json | 11 +- examples/shader-ast-evo/.gitignore | 7 +- examples/shader-ast-evo/package.json | 15 +- .../shader-ast-evo/{ => public}/index.html | 2 +- examples/shader-ast-evo/snowpack.config.js | 29 + examples/shader-ast-evo/src/static.d.ts | 59 + examples/shader-ast-evo/src/webpack.d.ts | 3 - examples/shader-ast-evo/tsconfig.json | 11 +- examples/shader-ast-evo/webpack.config.js | 23 - examples/shader-ast-noise/.gitignore | 7 +- examples/shader-ast-noise/package.json | 15 +- .../shader-ast-noise/{ => public}/index.html | 2 +- examples/shader-ast-noise/snowpack.config.js | 29 + examples/shader-ast-noise/src/static.d.ts | 59 + examples/shader-ast-noise/tsconfig.json | 11 +- examples/shader-ast-noise/webpack.config.js | 23 - examples/shader-ast-raymarch/.gitignore | 7 +- examples/shader-ast-raymarch/package.json | 15 +- .../{ => public}/index.html | 2 +- .../shader-ast-raymarch/snowpack.config.js | 29 + examples/shader-ast-raymarch/src/static.d.ts | 59 + examples/shader-ast-raymarch/tsconfig.json | 11 +- .../shader-ast-raymarch/webpack.config.js | 23 - examples/shader-ast-sdf2d/.gitignore | 7 +- examples/shader-ast-sdf2d/assets/tex.jpg | Bin 396018 -> 0 bytes examples/shader-ast-sdf2d/package.json | 15 +- .../shader-ast-sdf2d/{ => public}/index.html | 2 +- examples/shader-ast-sdf2d/snowpack.config.js | 29 + examples/shader-ast-sdf2d/src/static.d.ts | 59 + examples/shader-ast-sdf2d/tsconfig.json | 11 +- examples/shader-ast-sdf2d/webpack.config.js | 23 - examples/shader-ast-tunnel/.gitignore | 7 +- examples/shader-ast-tunnel/assets/tex.jpg | Bin 396018 -> 0 bytes examples/shader-ast-tunnel/package.json | 15 +- .../shader-ast-tunnel/{ => public}/index.html | 2 +- examples/shader-ast-tunnel/snowpack.config.js | 29 + examples/shader-ast-tunnel/src/index.ts | 2 +- examples/shader-ast-tunnel/src/static.d.ts | 59 + .../assets => shader-ast-tunnel/src}/tex.jpg | Bin examples/shader-ast-tunnel/src/webpack.d.ts | 3 - examples/shader-ast-tunnel/tsconfig.json | 11 +- examples/shader-ast-tunnel/webpack.config.js | 23 - examples/shader-graph/.gitignore | 10 +- examples/shader-graph/package.json | 15 +- examples/shader-graph/{ => public}/index.html | 2 +- examples/shader-graph/snowpack.config.js | 29 + examples/shader-graph/src/api.ts | 10 +- examples/shader-graph/src/index.ts | 2 +- examples/shader-graph/src/opnode.ts | 4 +- examples/shader-graph/src/static.d.ts | 59 + examples/shader-graph/src/webpack.d.ts | 4 - examples/shader-graph/tsconfig.json | 11 +- examples/shader-graph/webpack.config.js | 23 - examples/soa-ecs/.gitignore | 7 +- examples/soa-ecs/package.json | 18 +- examples/soa-ecs/{ => public}/index.html | 2 +- examples/soa-ecs/snowpack.config.js | 29 + examples/soa-ecs/src/static.d.ts | 59 + examples/soa-ecs/src/webpack.d.ts | 3 - examples/soa-ecs/tsconfig.json | 13 +- examples/soa-ecs/webpack.config.js | 23 - examples/stratified-grid/.gitignore | 10 +- examples/stratified-grid/package.json | 15 +- .../stratified-grid/{ => public}/index.html | 2 +- examples/stratified-grid/snowpack.config.js | 29 + examples/stratified-grid/src/static.d.ts | 59 + examples/stratified-grid/src/webpack.d.ts | 4 - examples/stratified-grid/tsconfig.json | 11 +- examples/stratified-grid/webpack.config.js | 23 - examples/svg-barchart/.gitignore | 7 +- examples/svg-barchart/package.json | 14 +- examples/svg-barchart/{ => public}/index.html | 2 +- examples/svg-barchart/snowpack.config.js | 29 + examples/svg-barchart/src/index.ts | 5 - examples/svg-barchart/src/static.d.ts | 59 + examples/svg-barchart/tsconfig.json | 12 +- examples/svg-particles/.gitignore | 7 +- examples/svg-particles/package.json | 16 +- .../svg-particles/{ => public}/index.html | 2 +- examples/svg-particles/snowpack.config.js | 29 + examples/svg-particles/src/static.d.ts | 59 + examples/svg-particles/tsconfig.json | 12 +- examples/svg-waveform/.gitignore | 7 +- examples/svg-waveform/package.json | 16 +- examples/svg-waveform/{ => public}/index.html | 2 +- examples/svg-waveform/snowpack.config.js | 29 + examples/svg-waveform/src/api.ts | 2 +- examples/svg-waveform/src/config.ts | 2 +- examples/svg-waveform/src/effects.ts | 2 + examples/svg-waveform/src/index.ts | 12 +- examples/svg-waveform/src/static.d.ts | 59 + examples/svg-waveform/tsconfig.json | 12 +- examples/svg-waveform/webpack.config.js | 23 - examples/talk-slides/.gitignore | 7 +- examples/talk-slides/package.json | 15 +- examples/talk-slides/{ => public}/index.html | 2 +- examples/talk-slides/snowpack.config.js | 29 + examples/talk-slides/src/index.ts | 16 +- examples/talk-slides/src/static.d.ts | 59 + examples/talk-slides/tsconfig.json | 12 +- examples/talk-slides/webpack.config.js | 23 - examples/texgen/src/webpack.d.ts | 3 - examples/text-canvas/.gitignore | 10 +- examples/text-canvas/package.json | 15 +- examples/text-canvas/{ => public}/index.html | 2 +- examples/text-canvas/snowpack.config.js | 29 + examples/text-canvas/src/static.d.ts | 59 + examples/text-canvas/src/webpack.d.ts | 4 - examples/text-canvas/tsconfig.json | 11 +- examples/text-canvas/webpack.config.js | 23 - examples/todo-list/.gitignore | 7 +- examples/todo-list/package.json | 14 +- examples/todo-list/{ => public}/index.html | 2 +- examples/todo-list/snowpack.config.js | 29 + examples/todo-list/src/static.d.ts | 59 + examples/todo-list/tsconfig.json | 12 +- examples/transducers-hdom/.gitignore | 7 +- examples/transducers-hdom/package.json | 14 +- .../transducers-hdom/{ => public}/index.html | 2 +- examples/transducers-hdom/snowpack.config.js | 29 + examples/transducers-hdom/src/static.d.ts | 59 + examples/transducers-hdom/tsconfig.json | 12 +- examples/triple-query/.gitignore | 7 +- examples/triple-query/package.json | 15 +- examples/triple-query/{ => public}/index.html | 2 +- examples/triple-query/snowpack.config.js | 29 + examples/triple-query/src/api.ts | 4 +- examples/triple-query/src/handlers.ts | 8 +- examples/triple-query/src/index.ts | 12 +- examples/triple-query/src/static.d.ts | 59 + examples/triple-query/tsconfig.json | 13 +- examples/triple-query/webpack.config.js | 23 - examples/tsconfig.json | 17 + examples/webgl-cube/package.json | 3 + examples/webgl-cube/snowpack.config.js | 17 +- examples/webgl-cube/src/static.d.ts | 59 + examples/webgl-cubemap/package.json | 3 + examples/webgl-cubemap/snowpack.config.js | 17 +- examples/webgl-cubemap/src/static.d.ts | 59 + examples/webgl-grid/package.json | 3 + examples/webgl-grid/snowpack.config.js | 17 +- examples/webgl-grid/src/static.d.ts | 59 + examples/webgl-msdf/.gitignore | 2 +- examples/webgl-msdf/package.json | 3 + examples/webgl-msdf/snowpack.config.js | 17 +- examples/webgl-multipass/package.json | 3 + examples/webgl-multipass/snowpack.config.js | 17 +- examples/webgl-multipass/src/static.d.ts | 59 + examples/webgl-shadertoy/package.json | 3 + examples/webgl-shadertoy/snowpack.config.js | 17 +- examples/webgl-shadertoy/src/static.d.ts | 59 + examples/webgl-ssao/package.json | 3 + examples/webgl-ssao/snowpack.config.js | 17 +- examples/webgl-ssao/src/static.d.ts | 59 + examples/wolfram/package.json | 3 + examples/wolfram/snowpack.config.js | 17 +- examples/wolfram/src/static.d.ts | 59 + examples/xml-converter/package.json | 6 +- examples/xml-converter/snowpack.config.js | 17 +- examples/xml-converter/src/static.d.ts | 59 + 692 files changed, 11026 insertions(+), 3296 deletions(-) rename examples/adaptive-threshold/{ => public}/index.html (93%) create mode 100644 examples/adaptive-threshold/snowpack.config.js create mode 100644 examples/adaptive-threshold/src/static.d.ts delete mode 100644 examples/adaptive-threshold/src/webpack.d.ts delete mode 100644 examples/adaptive-threshold/webpack.config.js rename examples/async-effect/{ => public}/foo.json (100%) rename examples/async-effect/{ => public}/index.html (94%) create mode 100644 examples/async-effect/snowpack.config.js create mode 100644 examples/async-effect/src/static.d.ts rename examples/bitmap-font/{ => public}/index.html (92%) create mode 100644 examples/bitmap-font/snowpack.config.js create mode 100644 examples/bitmap-font/src/static.d.ts delete mode 100644 examples/bitmap-font/webpack.config.js rename examples/canvas-dial/{ => public}/index.html (90%) create mode 100644 examples/canvas-dial/snowpack.config.js create mode 100644 examples/canvas-dial/src/static.d.ts delete mode 100644 examples/canvas-dial/webpack.config.js rename examples/cellular-automata/{ => public}/index.html (94%) create mode 100644 examples/cellular-automata/snowpack.config.js create mode 100644 examples/cellular-automata/src/static.d.ts create mode 100644 examples/crypto-chart/ohlc.json rename examples/crypto-chart/{ => public}/index.html (90%) create mode 100644 examples/crypto-chart/snowpack.config.js create mode 100644 examples/crypto-chart/src/static.d.ts rename examples/devcards/{ => public}/index.html (94%) create mode 100644 examples/devcards/snowpack.config.js create mode 100644 examples/devcards/src/static.d.ts rename examples/ellipse-proximity/{ => public}/index.html (93%) create mode 100644 examples/ellipse-proximity/snowpack.config.js create mode 100644 examples/ellipse-proximity/src/static.d.ts delete mode 100644 examples/ellipse-proximity/src/webpack.d.ts delete mode 100644 examples/ellipse-proximity/webpack.config.js rename examples/fft-synth/{ => public}/index.html (94%) create mode 100644 examples/fft-synth/snowpack.config.js create mode 100644 examples/fft-synth/src/static.d.ts delete mode 100644 examples/fft-synth/src/webpack.d.ts delete mode 100644 examples/fft-synth/webpack.config.js rename examples/geom-convex-hull/{ => public}/index.html (92%) create mode 100644 examples/geom-convex-hull/snowpack.config.js create mode 100644 examples/geom-convex-hull/src/static.d.ts delete mode 100644 examples/geom-convex-hull/src/webpack.d.ts delete mode 100644 examples/geom-convex-hull/webpack.config.js rename examples/geom-fuzz-basics/{ => public}/index.html (92%) create mode 100644 examples/geom-fuzz-basics/snowpack.config.js create mode 100644 examples/geom-fuzz-basics/src/static.d.ts delete mode 100644 examples/geom-fuzz-basics/src/webpack.d.ts delete mode 100644 examples/geom-fuzz-basics/webpack.config.js rename examples/geom-knn/{ => public}/index.html (90%) create mode 100644 examples/geom-knn/snowpack.config.js create mode 100644 examples/geom-knn/src/static.d.ts rename examples/geom-tessel/{ => public}/index.html (90%) create mode 100644 examples/geom-tessel/snowpack.config.js create mode 100644 examples/geom-tessel/src/static.d.ts rename examples/geom-voronoi-mst/{ => public}/index.html (89%) create mode 100644 examples/geom-voronoi-mst/snowpack.config.js create mode 100644 examples/geom-voronoi-mst/src/static.d.ts delete mode 100644 examples/geom-voronoi-mst/webpack.config.js rename examples/gesture-analysis/{ => public}/index.html (91%) create mode 100644 examples/gesture-analysis/snowpack.config.js create mode 100644 examples/gesture-analysis/src/static.d.ts delete mode 100644 examples/gesture-analysis/webpack.config.js rename examples/grid-iterators/{ => public}/index.html (92%) create mode 100644 examples/grid-iterators/snowpack.config.js create mode 100644 examples/grid-iterators/src/static.d.ts delete mode 100644 examples/grid-iterators/src/webpack.d.ts delete mode 100644 examples/grid-iterators/webpack.config.js rename examples/hdom-basics/{ => public}/index.html (90%) create mode 100644 examples/hdom-basics/snowpack.config.js create mode 100644 examples/hdom-basics/src/static.d.ts rename examples/hdom-benchmark/{ => public}/index.html (95%) create mode 100644 examples/hdom-benchmark/snowpack.config.js create mode 100644 examples/hdom-benchmark/src/static.d.ts delete mode 100644 examples/hdom-benchmark/webpack.config.js rename examples/hdom-benchmark2/{ => public}/index.html (90%) create mode 100644 examples/hdom-benchmark2/snowpack.config.js create mode 100644 examples/hdom-benchmark2/src/static.d.ts delete mode 100644 examples/hdom-benchmark2/webpack.config.js rename examples/hdom-canvas-clock/{ => public}/index.html (90%) create mode 100644 examples/hdom-canvas-clock/snowpack.config.js create mode 100644 examples/hdom-canvas-clock/src/static.d.ts rename examples/hdom-canvas-draw/{ => public}/index.html (90%) create mode 100644 examples/hdom-canvas-draw/snowpack.config.js create mode 100644 examples/hdom-canvas-draw/src/static.d.ts rename examples/hdom-canvas-particles/{ => public}/index.html (93%) create mode 100644 examples/hdom-canvas-particles/snowpack.config.js create mode 100644 examples/hdom-canvas-particles/src/static.d.ts delete mode 100644 examples/hdom-canvas-particles/src/webpack.d.ts delete mode 100644 examples/hdom-canvas-particles/webpack.config.js rename examples/hdom-canvas-shapes/{ => public}/index.html (90%) create mode 100644 examples/hdom-canvas-shapes/snowpack.config.js rename examples/hdom-canvas-shapes/{assets => src}/logo-64.png (100%) create mode 100644 examples/hdom-canvas-shapes/src/static.d.ts rename examples/hdom-dropdown-fuzzy/{ => public}/index.html (94%) create mode 100644 examples/hdom-dropdown-fuzzy/snowpack.config.js create mode 100644 examples/hdom-dropdown-fuzzy/src/static.d.ts delete mode 100644 examples/hdom-dropdown-fuzzy/webpack.config.js rename examples/hdom-dropdown/{ => public}/index.html (94%) create mode 100644 examples/hdom-dropdown/snowpack.config.js create mode 100644 examples/hdom-dropdown/src/static.d.ts delete mode 100644 examples/hdom-dropdown/webpack.config.js rename examples/hdom-dyn-context/{ => public}/index.html (90%) create mode 100644 examples/hdom-dyn-context/snowpack.config.js create mode 100644 examples/hdom-dyn-context/src/static.d.ts rename examples/hdom-elm/{ => public}/index.html (95%) create mode 100644 examples/hdom-elm/snowpack.config.js create mode 100644 examples/hdom-elm/src/static.d.ts delete mode 100644 examples/hdom-elm/webpack.config.js rename examples/hdom-inner-html/{ => public}/index.html (90%) create mode 100644 examples/hdom-inner-html/snowpack.config.js create mode 100644 examples/hdom-inner-html/src/static.d.ts rename examples/hdom-local-render/{ => public}/index.html (95%) create mode 100644 examples/hdom-local-render/snowpack.config.js create mode 100644 examples/hdom-local-render/src/static.d.ts delete mode 100644 examples/hdom-local-render/src/webpack.d.ts delete mode 100644 examples/hdom-local-render/webpack.config.js rename examples/hdom-localstate/{ => public}/index.html (90%) create mode 100644 examples/hdom-localstate/snowpack.config.js create mode 100644 examples/hdom-localstate/src/static.d.ts rename examples/hdom-skip-nested/{ => public}/index.html (95%) create mode 100644 examples/hdom-skip-nested/snowpack.config.js create mode 100644 examples/hdom-skip-nested/src/static.d.ts delete mode 100644 examples/hdom-skip-nested/src/webpack.d.ts delete mode 100644 examples/hdom-skip-nested/webpack.config.js rename examples/hdom-skip/{ => public}/index.html (90%) create mode 100644 examples/hdom-skip/snowpack.config.js create mode 100644 examples/hdom-skip/src/static.d.ts rename examples/hdom-theme-adr-0003/{ => public}/index.html (92%) create mode 100644 examples/hdom-theme-adr-0003/snowpack.config.js create mode 100644 examples/hdom-theme-adr-0003/src/static.d.ts rename examples/hdom-toggle/{ => public}/index.html (92%) create mode 100644 examples/hdom-toggle/snowpack.config.js create mode 100644 examples/hdom-toggle/src/static.d.ts delete mode 100644 examples/hdom-toggle/src/webpack.d.ts delete mode 100644 examples/hdom-toggle/webpack.config.js rename examples/hdom-vscroller/{ => public}/index.html (90%) create mode 100644 examples/hdom-vscroller/snowpack.config.js create mode 100644 examples/hdom-vscroller/src/static.d.ts delete mode 100644 examples/hdom-vscroller/src/webpack.d.ts delete mode 100644 examples/hdom-vscroller/webpack.config.js rename examples/hiccup-canvas-arcs/{ => public}/index.html (93%) create mode 100644 examples/hiccup-canvas-arcs/snowpack.config.js create mode 100644 examples/hiccup-canvas-arcs/src/static.d.ts delete mode 100644 examples/hiccup-canvas-arcs/src/webpack.d.ts delete mode 100644 examples/hiccup-canvas-arcs/webpack.config.js rename examples/hydrate-basics/{ => public}/index.html (90%) create mode 100644 examples/hydrate-basics/snowpack.config.js create mode 100644 examples/hydrate-basics/src/static.d.ts rename examples/imgui-basics/{ => public}/index.html (93%) create mode 100644 examples/imgui-basics/snowpack.config.js create mode 100644 examples/imgui-basics/src/static.d.ts delete mode 100644 examples/imgui-basics/src/webpack.d.ts delete mode 100644 examples/imgui-basics/webpack.config.js rename examples/imgui/{ => public}/index.html (96%) create mode 100644 examples/imgui/snowpack.config.js create mode 100644 examples/imgui/src/static.d.ts delete mode 100644 examples/imgui/src/webpack.d.ts delete mode 100644 examples/imgui/webpack.config.js rename examples/interceptor-basics/{ => public}/index.html (90%) create mode 100644 examples/interceptor-basics/snowpack.config.js create mode 100644 examples/interceptor-basics/src/static.d.ts rename examples/interceptor-basics2/{ => public}/index.html (96%) create mode 100644 examples/interceptor-basics2/snowpack.config.js create mode 100644 examples/interceptor-basics2/src/static.d.ts rename examples/iso-plasma/{ => public}/index.html (90%) create mode 100644 examples/iso-plasma/snowpack.config.js create mode 100644 examples/iso-plasma/src/static.d.ts rename examples/json-components/{ => public}/assets/editme.png (100%) rename examples/json-components/{ => public}/index.html (98%) create mode 100644 examples/json-components/snowpack.config.js create mode 100644 examples/json-components/src/static.d.ts rename examples/login-form/{ => public}/index.html (93%) create mode 100644 examples/login-form/snowpack.config.js create mode 100644 examples/login-form/src/static.d.ts rename examples/markdown/{ => public}/index.html (94%) create mode 100644 examples/markdown/snowpack.config.js rename examples/markdown/{README.txt => src/README.md} (100%) create mode 100644 examples/markdown/src/static.d.ts delete mode 100644 examples/markdown/src/webpack.d.ts rename examples/multitouch/{ => public}/index.html (92%) create mode 100644 examples/multitouch/snowpack.config.js create mode 100644 examples/multitouch/src/static.d.ts delete mode 100644 examples/multitouch/src/webpack.d.ts delete mode 100644 examples/multitouch/webpack.config.js rename examples/parse-playground/{ => public}/index.html (95%) create mode 100644 examples/parse-playground/snowpack.config.js create mode 100644 examples/parse-playground/src/static.d.ts delete mode 100644 examples/parse-playground/src/webpack.d.ts delete mode 100644 examples/parse-playground/webpack.config.js rename examples/pixel-basics/{ => public}/index.html (90%) create mode 100644 examples/pixel-basics/snowpack.config.js create mode 100644 examples/pixel-basics/src/debug.png rename examples/pixel-basics/{assets => src}/haystack.jpg (100%) rename examples/pixel-basics/{assets => src}/logo-64.png (100%) create mode 100644 examples/pixel-basics/src/static.d.ts delete mode 100644 examples/pixel-basics/src/webpack.d.ts delete mode 100644 examples/pixel-basics/webpack.config.js rename examples/poisson-circles/{ => public}/index.html (92%) create mode 100644 examples/poisson-circles/snowpack.config.js create mode 100644 examples/poisson-circles/src/static.d.ts delete mode 100644 examples/poisson-circles/src/webpack.d.ts delete mode 100644 examples/poisson-circles/webpack.config.js rename examples/poly-spline/{ => public}/index.html (90%) create mode 100644 examples/poly-spline/snowpack.config.js create mode 100644 examples/poly-spline/src/static.d.ts delete mode 100644 examples/poly-spline/webpack.config.js rename examples/porter-duff/{ => public}/index.html (93%) create mode 100644 examples/porter-duff/snowpack.config.js rename examples/porter-duff/{assets => src}/plus.png (100%) rename examples/porter-duff/{assets => src}/ring.png (100%) create mode 100644 examples/porter-duff/src/static.d.ts delete mode 100644 examples/porter-duff/src/webpack.d.ts delete mode 100644 examples/porter-duff/webpack.config.js rename examples/ramp-synth/{ => public}/index.html (93%) create mode 100644 examples/ramp-synth/snowpack.config.js create mode 100644 examples/ramp-synth/src/static.d.ts delete mode 100644 examples/ramp-synth/webpack.config.js rename examples/rdom-basics/{ => public}/index.html (93%) create mode 100644 examples/rdom-basics/snowpack.config.js create mode 100644 examples/rdom-basics/src/static.d.ts delete mode 100644 examples/rdom-basics/src/webpack.d.ts delete mode 100644 examples/rdom-basics/webpack.config.js rename examples/rdom-dnd/{ => public}/index.html (94%) create mode 100644 examples/rdom-dnd/snowpack.config.js create mode 100644 examples/rdom-dnd/src/static.d.ts delete mode 100644 examples/rdom-dnd/src/webpack.d.ts delete mode 100644 examples/rdom-dnd/webpack.config.js rename examples/rdom-lissajous/{ => public}/index.html (95%) create mode 100644 examples/rdom-lissajous/snowpack.config.js create mode 100644 examples/rdom-lissajous/src/static.d.ts delete mode 100644 examples/rdom-lissajous/src/webpack.d.ts delete mode 100644 examples/rdom-lissajous/webpack.config.js rename examples/rdom-search-docs/{ => public}/index.html (91%) create mode 100644 examples/rdom-search-docs/snowpack.config.js create mode 100644 examples/rdom-search-docs/src/static.d.ts delete mode 100644 examples/rdom-search-docs/src/webpack.d.ts delete mode 100644 examples/rdom-search-docs/webpack.config.js rename examples/rdom-svg-nodes/{ => public}/index.html (92%) create mode 100644 examples/rdom-svg-nodes/snowpack.config.js create mode 100644 examples/rdom-svg-nodes/src/static.d.ts delete mode 100644 examples/rdom-svg-nodes/src/webpack.d.ts delete mode 100644 examples/rdom-svg-nodes/webpack.config.js delete mode 100644 examples/rotating-voronoi/dist/index.html rename examples/rotating-voronoi/{ => public}/index.html (90%) create mode 100644 examples/rotating-voronoi/snowpack.config.js create mode 100644 examples/rotating-voronoi/src/static.d.ts delete mode 100644 examples/rotating-voronoi/webpack.config.js rename examples/router-basics/{ => public}/assets/manomine-1.jpg (100%) rename examples/router-basics/{ => public}/assets/manomine-2.jpg (100%) rename examples/router-basics/{ => public}/assets/manomine-3.jpg (100%) rename examples/router-basics/{ => public}/assets/user-1.json (100%) rename examples/router-basics/{ => public}/assets/user-2.json (100%) rename examples/router-basics/{ => public}/assets/users.json (100%) rename examples/router-basics/{ => public}/index.html (96%) create mode 100644 examples/router-basics/snowpack.config.js create mode 100644 examples/router-basics/src/static.d.ts delete mode 100644 examples/router-basics/webpack.config.js rename examples/rstream-dataflow/{ => public}/index.html (94%) create mode 100644 examples/rstream-dataflow/snowpack.config.js create mode 100644 examples/rstream-dataflow/src/static.d.ts delete mode 100644 examples/rstream-dataflow/webpack.config.js rename examples/rstream-event-loop/{ => public}/index.html (93%) create mode 100644 examples/rstream-event-loop/snowpack.config.js create mode 100644 examples/rstream-event-loop/src/static.d.ts delete mode 100644 examples/rstream-event-loop/webpack.config.js create mode 100644 examples/rstream-grid/notes.md rename examples/rstream-grid/{ => public}/index.html (98%) create mode 100644 examples/rstream-grid/snowpack.config.js create mode 100644 examples/rstream-grid/src/static.d.ts delete mode 100644 examples/rstream-grid/webpack.config.js rename examples/rstream-hdom/{ => public}/index.html (91%) create mode 100644 examples/rstream-hdom/snowpack.config.js create mode 100644 examples/rstream-hdom/src/static.d.ts rename examples/rstream-spreadsheet/{ => public}/index.html (97%) create mode 100644 examples/rstream-spreadsheet/snowpack.config.js create mode 100644 examples/rstream-spreadsheet/src/static.d.ts delete mode 100644 examples/rstream-spreadsheet/src/webpack.d.ts delete mode 100644 examples/rstream-spreadsheet/webpack.config.js rename examples/scenegraph-image/{ => public}/index.html (91%) create mode 100644 examples/scenegraph-image/snowpack.config.js rename examples/scenegraph-image/{assets => src}/logo-256.png (100%) create mode 100644 examples/scenegraph-image/src/static.d.ts delete mode 100644 examples/scenegraph-image/src/webpack.d.ts delete mode 100644 examples/scenegraph-image/webpack.config.js rename examples/scenegraph/{ => public}/index.html (90%) create mode 100644 examples/scenegraph/snowpack.config.js create mode 100644 examples/scenegraph/src/static.d.ts delete mode 100644 examples/scenegraph/webpack.config.js create mode 100644 examples/search/package.json rename examples/shader-ast-canvas2d/{ => public}/index.html (90%) create mode 100644 examples/shader-ast-canvas2d/snowpack.config.js create mode 100644 examples/shader-ast-canvas2d/src/static.d.ts rename examples/shader-ast-evo/{ => public}/index.html (93%) create mode 100644 examples/shader-ast-evo/snowpack.config.js create mode 100644 examples/shader-ast-evo/src/static.d.ts delete mode 100644 examples/shader-ast-evo/src/webpack.d.ts delete mode 100644 examples/shader-ast-evo/webpack.config.js rename examples/shader-ast-noise/{ => public}/index.html (95%) create mode 100644 examples/shader-ast-noise/snowpack.config.js create mode 100644 examples/shader-ast-noise/src/static.d.ts delete mode 100644 examples/shader-ast-noise/webpack.config.js rename examples/shader-ast-raymarch/{ => public}/index.html (95%) create mode 100644 examples/shader-ast-raymarch/snowpack.config.js create mode 100644 examples/shader-ast-raymarch/src/static.d.ts delete mode 100644 examples/shader-ast-raymarch/webpack.config.js delete mode 100644 examples/shader-ast-sdf2d/assets/tex.jpg rename examples/shader-ast-sdf2d/{ => public}/index.html (95%) create mode 100644 examples/shader-ast-sdf2d/snowpack.config.js create mode 100644 examples/shader-ast-sdf2d/src/static.d.ts delete mode 100644 examples/shader-ast-sdf2d/webpack.config.js delete mode 100644 examples/shader-ast-tunnel/assets/tex.jpg rename examples/shader-ast-tunnel/{ => public}/index.html (95%) create mode 100644 examples/shader-ast-tunnel/snowpack.config.js create mode 100644 examples/shader-ast-tunnel/src/static.d.ts rename examples/{shader-ast-raymarch/assets => shader-ast-tunnel/src}/tex.jpg (100%) delete mode 100644 examples/shader-ast-tunnel/src/webpack.d.ts delete mode 100644 examples/shader-ast-tunnel/webpack.config.js rename examples/shader-graph/{ => public}/index.html (92%) create mode 100644 examples/shader-graph/snowpack.config.js create mode 100644 examples/shader-graph/src/static.d.ts delete mode 100644 examples/shader-graph/src/webpack.d.ts delete mode 100644 examples/shader-graph/webpack.config.js rename examples/soa-ecs/{ => public}/index.html (93%) create mode 100644 examples/soa-ecs/snowpack.config.js create mode 100644 examples/soa-ecs/src/static.d.ts delete mode 100644 examples/soa-ecs/src/webpack.d.ts delete mode 100644 examples/soa-ecs/webpack.config.js rename examples/stratified-grid/{ => public}/index.html (92%) create mode 100644 examples/stratified-grid/snowpack.config.js create mode 100644 examples/stratified-grid/src/static.d.ts delete mode 100644 examples/stratified-grid/src/webpack.d.ts delete mode 100644 examples/stratified-grid/webpack.config.js rename examples/svg-barchart/{ => public}/index.html (90%) create mode 100644 examples/svg-barchart/snowpack.config.js create mode 100644 examples/svg-barchart/src/static.d.ts rename examples/svg-particles/{ => public}/index.html (93%) create mode 100644 examples/svg-particles/snowpack.config.js create mode 100644 examples/svg-particles/src/static.d.ts rename examples/svg-waveform/{ => public}/index.html (92%) create mode 100644 examples/svg-waveform/snowpack.config.js create mode 100644 examples/svg-waveform/src/static.d.ts delete mode 100644 examples/svg-waveform/webpack.config.js rename examples/talk-slides/{ => public}/index.html (94%) create mode 100644 examples/talk-slides/snowpack.config.js create mode 100644 examples/talk-slides/src/static.d.ts delete mode 100644 examples/talk-slides/webpack.config.js delete mode 100644 examples/texgen/src/webpack.d.ts rename examples/text-canvas/{ => public}/index.html (94%) create mode 100644 examples/text-canvas/snowpack.config.js create mode 100644 examples/text-canvas/src/static.d.ts delete mode 100644 examples/text-canvas/src/webpack.d.ts delete mode 100644 examples/text-canvas/webpack.config.js rename examples/todo-list/{ => public}/index.html (96%) create mode 100644 examples/todo-list/snowpack.config.js create mode 100644 examples/todo-list/src/static.d.ts rename examples/transducers-hdom/{ => public}/index.html (90%) create mode 100644 examples/transducers-hdom/snowpack.config.js create mode 100644 examples/transducers-hdom/src/static.d.ts rename examples/triple-query/{ => public}/index.html (92%) create mode 100644 examples/triple-query/snowpack.config.js create mode 100644 examples/triple-query/src/static.d.ts delete mode 100644 examples/triple-query/webpack.config.js create mode 100644 examples/tsconfig.json create mode 100644 examples/webgl-cube/src/static.d.ts create mode 100644 examples/webgl-cubemap/src/static.d.ts create mode 100644 examples/webgl-grid/src/static.d.ts create mode 100644 examples/webgl-multipass/src/static.d.ts create mode 100644 examples/webgl-shadertoy/src/static.d.ts create mode 100644 examples/webgl-ssao/src/static.d.ts create mode 100644 examples/wolfram/src/static.d.ts create mode 100644 examples/xml-converter/src/static.d.ts diff --git a/examples/adaptive-threshold/.gitignore b/examples/adaptive-threshold/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/adaptive-threshold/.gitignore +++ b/examples/adaptive-threshold/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/adaptive-threshold/package.json b/examples/adaptive-threshold/package.json index 595a4517d8..3131f9e821 100644 --- a/examples/adaptive-threshold/package.json +++ b/examples/adaptive-threshold/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -39,5 +33,8 @@ "transducers-hdom" ], "screenshot": "examples/adaptive-threshold.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/adaptive-threshold/index.html b/examples/adaptive-threshold/public/index.html similarity index 93% rename from examples/adaptive-threshold/index.html rename to examples/adaptive-threshold/public/index.html index 5cd9b402b9..0c128a830a 100644 --- a/examples/adaptive-threshold/index.html +++ b/examples/adaptive-threshold/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/adaptive-threshold/snowpack.config.js b/examples/adaptive-threshold/snowpack.config.js new file mode 100644 index 0000000000..b453cdcb2a --- /dev/null +++ b/examples/adaptive-threshold/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/adaptive-threshold", + }, +}; diff --git a/examples/adaptive-threshold/src/api.ts b/examples/adaptive-threshold/src/api.ts index c8bd70dfe2..f1341427d6 100644 --- a/examples/adaptive-threshold/src/api.ts +++ b/examples/adaptive-threshold/src/api.ts @@ -1,5 +1,5 @@ import type { Val1 } from "@thi.ng/api"; -import { PackedBuffer } from "@thi.ng/pixel"; +import type { PackedBuffer } from "@thi.ng/pixel"; // event ID constants export const SET_IMAGE = "set-image"; diff --git a/examples/adaptive-threshold/src/index.ts b/examples/adaptive-threshold/src/index.ts index bc34d84ba9..e67ff8d09f 100644 --- a/examples/adaptive-threshold/src/index.ts +++ b/examples/adaptive-threshold/src/index.ts @@ -1,5 +1,5 @@ import { peek } from "@thi.ng/arrays"; -import { PackedBuffer } from "@thi.ng/pixel"; +import type { PackedBuffer } from "@thi.ng/pixel"; import { fromRAF, sidechainPartition } from "@thi.ng/rstream"; import { map } from "@thi.ng/transducers"; import { updateDOM } from "@thi.ng/transducers-hdom"; diff --git a/examples/adaptive-threshold/src/static.d.ts b/examples/adaptive-threshold/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/adaptive-threshold/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/adaptive-threshold/src/webpack.d.ts b/examples/adaptive-threshold/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/adaptive-threshold/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/adaptive-threshold/tsconfig.json b/examples/adaptive-threshold/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/adaptive-threshold/tsconfig.json +++ b/examples/adaptive-threshold/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/adaptive-threshold/webpack.config.js b/examples/adaptive-threshold/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/adaptive-threshold/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/async-effect/.gitignore b/examples/async-effect/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/async-effect/.gitignore +++ b/examples/async-effect/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/async-effect/package.json b/examples/async-effect/package.json index c3941cd3dc..02cc4e607a 100644 --- a/examples/async-effect/package.json +++ b/examples/async-effect/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "prep": "yarn clean && mkdir -p out && cp foo.json out", - "build": "yarn prep && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "yarn prep && parcel index.html -p 8080 --open -d out" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -31,5 +25,8 @@ "readme": [ "interceptors" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/async-effect/foo.json b/examples/async-effect/public/foo.json similarity index 100% rename from examples/async-effect/foo.json rename to examples/async-effect/public/foo.json diff --git a/examples/async-effect/index.html b/examples/async-effect/public/index.html similarity index 94% rename from examples/async-effect/index.html rename to examples/async-effect/public/index.html index 85e1afcc39..846f7e2034 100644 --- a/examples/async-effect/index.html +++ b/examples/async-effect/public/index.html @@ -44,6 +44,6 @@

async side effect handling

>

- + diff --git a/examples/async-effect/snowpack.config.js b/examples/async-effect/snowpack.config.js new file mode 100644 index 0000000000..947542ffe9 --- /dev/null +++ b/examples/async-effect/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/async-effect", + }, +}; diff --git a/examples/async-effect/src/static.d.ts b/examples/async-effect/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/async-effect/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/async-effect/tsconfig.json b/examples/async-effect/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/async-effect/tsconfig.json +++ b/examples/async-effect/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/bitmap-font/.gitignore b/examples/bitmap-font/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/bitmap-font/.gitignore +++ b/examples/bitmap-font/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/bitmap-font/package.json b/examples/bitmap-font/package.json index a69324ec08..985362ff7a 100644 --- a/examples/bitmap-font/package.json +++ b/examples/bitmap-font/package.json @@ -6,16 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "rimraf": "^2.6.3", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -40,5 +33,8 @@ "transducers-hdom" ], "screenshot": "examples/bitmap-font.gif" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/bitmap-font/index.html b/examples/bitmap-font/public/index.html similarity index 92% rename from examples/bitmap-font/index.html rename to examples/bitmap-font/public/index.html index 33c4369f85..230a13f3db 100644 --- a/examples/bitmap-font/index.html +++ b/examples/bitmap-font/public/index.html @@ -27,6 +27,6 @@ >Source code - + diff --git a/examples/bitmap-font/snowpack.config.js b/examples/bitmap-font/snowpack.config.js new file mode 100644 index 0000000000..44f64dc948 --- /dev/null +++ b/examples/bitmap-font/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/bitmap-font", + }, +}; diff --git a/examples/bitmap-font/src/index.ts b/examples/bitmap-font/src/index.ts index 7b23a4072b..0dab0a6250 100644 --- a/examples/bitmap-font/src/index.ts +++ b/examples/bitmap-font/src/index.ts @@ -48,6 +48,7 @@ const banner = ({ input, on, off }: IObjectOf) => comp( // dynamically create `xfChar` transducers for each char // and run them in parallel via `multiplex()` + // @ts-ignore multiplex.apply(null, [ ...map((i) => xfChar(i, on, off), range(input.length)), ]), @@ -57,6 +58,7 @@ const banner = ({ input, on, off }: IObjectOf) => // use `str()` reducer to build string result str("\n"), // convert input string into stream of row-major bitmap font tuples + // @ts-ignore zip.apply(null, [...map(lookupChar, input || " ")]) ); @@ -113,8 +115,8 @@ main.transform(map(app), updateDOM()); // input.next(transduce(map((x: number) => String.fromCharCode(x)), str(), range(32, 127))); -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} +// // HMR handling +// if (process.env.NODE_ENV !== "production") { +// const hot = (module).hot; +// hot && hot.dispose(() => main.done()); +// } diff --git a/examples/bitmap-font/src/static.d.ts b/examples/bitmap-font/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/bitmap-font/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/bitmap-font/tsconfig.json b/examples/bitmap-font/tsconfig.json index 118d2a6ce2..48d558b4f8 100644 --- a/examples/bitmap-font/tsconfig.json +++ b/examples/bitmap-font/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true, - "strictBindCallApply": false - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/bitmap-font/webpack.config.js b/examples/bitmap-font/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/bitmap-font/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/canvas-dial/.gitignore b/examples/canvas-dial/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/canvas-dial/.gitignore +++ b/examples/canvas-dial/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/canvas-dial/package.json b/examples/canvas-dial/package.json index ec75eda138..d457e003ec 100644 --- a/examples/canvas-dial/package.json +++ b/examples/canvas-dial/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -42,5 +36,8 @@ "vectors" ], "screenshot": "examples/canvas-dial.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/canvas-dial/index.html b/examples/canvas-dial/public/index.html similarity index 90% rename from examples/canvas-dial/index.html rename to examples/canvas-dial/public/index.html index da2c34495e..5a4fad6bc5 100644 --- a/examples/canvas-dial/index.html +++ b/examples/canvas-dial/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/canvas-dial/snowpack.config.js b/examples/canvas-dial/snowpack.config.js new file mode 100644 index 0000000000..c11ebe5b7f --- /dev/null +++ b/examples/canvas-dial/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/canvas-dial", + }, +}; diff --git a/examples/canvas-dial/src/dial.ts b/examples/canvas-dial/src/dial.ts index f14d776e0c..552a189560 100644 --- a/examples/canvas-dial/src/dial.ts +++ b/examples/canvas-dial/src/dial.ts @@ -3,7 +3,7 @@ import { peek } from "@thi.ng/arrays"; import { isString } from "@thi.ng/checks"; import { canvas2D } from "@thi.ng/hdom-components"; import { fitClamped } from "@thi.ng/math"; -import { Subscription } from "@thi.ng/rstream"; +import type { Subscription } from "@thi.ng/rstream"; import { GestureEvent, gestureStream, diff --git a/examples/canvas-dial/src/static.d.ts b/examples/canvas-dial/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/canvas-dial/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/canvas-dial/tsconfig.json b/examples/canvas-dial/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/canvas-dial/tsconfig.json +++ b/examples/canvas-dial/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/canvas-dial/webpack.config.js b/examples/canvas-dial/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/canvas-dial/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/cellular-automata/.gitignore b/examples/cellular-automata/.gitignore index 360cd8a267..e228563433 100644 --- a/examples/cellular-automata/.gitignore +++ b/examples/cellular-automata/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js \ No newline at end of file +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/cellular-automata/package.json b/examples/cellular-automata/package.json index 9046fe1d9e..75a1d684db 100644 --- a/examples/cellular-automata/package.json +++ b/examples/cellular-automata/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -33,5 +28,8 @@ "transducers" ], "screenshot": "examples/cellular-automata.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/cellular-automata/index.html b/examples/cellular-automata/public/index.html similarity index 94% rename from examples/cellular-automata/index.html rename to examples/cellular-automata/public/index.html index 5f1d0e6389..f995405363 100644 --- a/examples/cellular-automata/index.html +++ b/examples/cellular-automata/public/index.html @@ -38,6 +38,6 @@ >@thi.ng/hdom. - + diff --git a/examples/cellular-automata/snowpack.config.js b/examples/cellular-automata/snowpack.config.js new file mode 100644 index 0000000000..01547e6d6a --- /dev/null +++ b/examples/cellular-automata/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/cellular-automata", + }, +}; diff --git a/examples/cellular-automata/src/static.d.ts b/examples/cellular-automata/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/cellular-automata/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/cellular-automata/tsconfig.json b/examples/cellular-automata/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/cellular-automata/tsconfig.json +++ b/examples/cellular-automata/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/commit-heatmap/README.md b/examples/commit-heatmap/README.md index b2315afd3c..0ef7e1677b 100644 --- a/examples/commit-heatmap/README.md +++ b/examples/commit-heatmap/README.md @@ -9,6 +9,9 @@ spec. See source code for config options. ## Generating the visualization +The instructions below assume the [entire umbrella repo has already been +built](https://github.com/thi-ng/umbrella/blob/develop/README.md#building): + ```bash cd umbrella/examples/commit-heatmap yarn build diff --git a/examples/commit-heatmap/package.json b/examples/commit-heatmap/package.json index 2223839652..54913fe2f7 100644 --- a/examples/commit-heatmap/package.json +++ b/examples/commit-heatmap/package.json @@ -6,12 +6,8 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "ts-node src/index.ts" - }, - "devDependencies": { - "ts-node": "^8.5.2", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf .cache build out", + "build": "../../node_modules/.bin/ts-node src/index.ts" }, "dependencies": { "@thi.ng/associative": "latest", diff --git a/examples/commit-heatmap/src/index.ts b/examples/commit-heatmap/src/index.ts index 5fe236f6da..eebd9041a0 100644 --- a/examples/commit-heatmap/src/index.ts +++ b/examples/commit-heatmap/src/index.ts @@ -281,5 +281,5 @@ threadLast( timeLineLabels(), ], serialize, - [fs.writeFileSync, "heatmap2.svg"] + [fs.writeFileSync, "heatmap.svg"] ); diff --git a/examples/commit-table-ssr/package.json b/examples/commit-table-ssr/package.json index e82737cc9e..419583bba8 100644 --- a/examples/commit-table-ssr/package.json +++ b/examples/commit-table-ssr/package.json @@ -6,20 +6,16 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "prep": "yarn clean && mkdir -p out && cp commits.json out", - "build-static": "tsc && node build/server/static.js", - "build": "yarn prep && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", + "clean": "../../node_modules/.bin/rimraf node_modules/.cache build out", + "build-static": "../../node_modules/.bin/ts-node src/server/static.ts", "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "tsc && node build/server/index.js" + "start": "../../node_modules/.bin/ts-node src/server/index.ts" }, "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", + "ts-node": "^9.1.0", "typescript": "^4.1.2" }, "dependencies": { - "express": "^4.17.1", "@thi.ng/api": "latest", "@thi.ng/associative": "latest", "@thi.ng/cache": "latest", @@ -28,7 +24,8 @@ "@thi.ng/rstream": "latest", "@thi.ng/transducers": "latest", "@thi.ng/transducers-hdom": "latest", - "@types/express": "^4.17.7" + "@types/express": "^4.17.7", + "express": "^4.17.1" }, "browserslist": [ "last 3 Chrome versions" diff --git a/examples/crypto-chart/.gitignore b/examples/crypto-chart/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/crypto-chart/.gitignore +++ b/examples/crypto-chart/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/crypto-chart/ohlc.json b/examples/crypto-chart/ohlc.json new file mode 100644 index 0000000000..3347ad31b3 --- /dev/null +++ b/examples/crypto-chart/ohlc.json @@ -0,0 +1,1535 @@ +{ + "Response": "Success", + "Type": 100, + "Aggregated": false, + "Data": [ + { + "time": 1531054800, + "close": 6736.36, + "high": 6747.33, + "low": 6712.34, + "open": 6731.21, + "volumefrom": 1808.95, + "volumeto": 12241907.1 + }, + { + "time": 1531058400, + "close": 6751.25, + "high": 6762.05, + "low": 6724.56, + "open": 6736.36, + "volumefrom": 2054.76, + "volumeto": 13903333.45 + }, + { + "time": 1531062000, + "close": 6743.55, + "high": 6768.96, + "low": 6742.58, + "open": 6751.4, + "volumefrom": 2015.38, + "volumeto": 13683443.72 + }, + { + "time": 1531065600, + "close": 6751.56, + "high": 6758.84, + "low": 6742.12, + "open": 6744.22, + "volumefrom": 1085.39, + "volumeto": 7381082.14 + }, + { + "time": 1531069200, + "close": 6752.21, + "high": 6764.38, + "low": 6745.59, + "open": 6751.59, + "volumefrom": 1274.54, + "volumeto": 8656031.41 + }, + { + "time": 1531072800, + "close": 6752.81, + "high": 6763.28, + "low": 6745.05, + "open": 6752.21, + "volumefrom": 1080.71, + "volumeto": 7331549.32 + }, + { + "time": 1531076400, + "close": 6758, + "high": 6760.83, + "low": 6742.41, + "open": 6752.81, + "volumefrom": 1043.28, + "volumeto": 7073338.91 + }, + { + "time": 1531080000, + "close": 6748.79, + "high": 6765.02, + "low": 6748.46, + "open": 6758, + "volumefrom": 1370.51, + "volumeto": 9343071.48 + }, + { + "time": 1531083600, + "close": 6755, + "high": 6761.91, + "low": 6743.97, + "open": 6748.79, + "volumefrom": 1123.85, + "volumeto": 7634206.13 + }, + { + "time": 1531087200, + "close": 6751.18, + "high": 6758.82, + "low": 6742.34, + "open": 6755.03, + "volumefrom": 1205.95, + "volumeto": 8191445.01 + }, + { + "time": 1531090800, + "close": 6707.38, + "high": 6752.81, + "low": 6684.15, + "open": 6751.94, + "volumefrom": 3513.7, + "volumeto": 23623766.17 + }, + { + "time": 1531094400, + "close": 6716.19, + "high": 6727.06, + "low": 6692.62, + "open": 6707.46, + "volumefrom": 1595.85, + "volumeto": 10764835.22 + }, + { + "time": 1531098000, + "close": 6704.18, + "high": 6717.29, + "low": 6694.84, + "open": 6716.19, + "volumefrom": 1298.23, + "volumeto": 8729204.25 + }, + { + "time": 1531101600, + "close": 6701.34, + "high": 6706, + "low": 6690.61, + "open": 6704.18, + "volumefrom": 1135.75, + "volumeto": 7632998.18 + }, + { + "time": 1531105200, + "close": 6712.3, + "high": 6717.81, + "low": 6699.16, + "open": 6701.3, + "volumefrom": 1233.99, + "volumeto": 8303151.48 + }, + { + "time": 1531108800, + "close": 6702.38, + "high": 6715.55, + "low": 6696.35, + "open": 6712.3, + "volumefrom": 1377.04, + "volumeto": 9269485.43 + }, + { + "time": 1531112400, + "close": 6702.77, + "high": 6706.54, + "low": 6694.53, + "open": 6702.58, + "volumefrom": 1233.8, + "volumeto": 8294586.37 + }, + { + "time": 1531116000, + "close": 6714.61, + "high": 6720.46, + "low": 6699.55, + "open": 6702.81, + "volumefrom": 1775.97, + "volumeto": 11958344.77 + }, + { + "time": 1531119600, + "close": 6725.73, + "high": 6739.25, + "low": 6706.88, + "open": 6714.66, + "volumefrom": 1529.24, + "volumeto": 10316826.29 + }, + { + "time": 1531123200, + "close": 6721.48, + "high": 6729.42, + "low": 6715.41, + "open": 6725.74, + "volumefrom": 1359.6, + "volumeto": 9174151.01 + }, + { + "time": 1531126800, + "close": 6690.8, + "high": 6721.65, + "low": 6670.9, + "open": 6721.48, + "volumefrom": 3344.4, + "volumeto": 22431823.64 + }, + { + "time": 1531130400, + "close": 6696.14, + "high": 6702.51, + "low": 6680.06, + "open": 6690.94, + "volumefrom": 1682.41, + "volumeto": 11306630.17 + }, + { + "time": 1531134000, + "close": 6723, + "high": 6746.24, + "low": 6694.68, + "open": 6695.2, + "volumefrom": 2631.14, + "volumeto": 17723558.62 + }, + { + "time": 1531137600, + "close": 6711.4, + "high": 6725.63, + "low": 6705.89, + "open": 6723.14, + "volumefrom": 1459.97, + "volumeto": 9866328.98 + }, + { + "time": 1531141200, + "close": 6727.41, + "high": 6739.11, + "low": 6709.93, + "open": 6711.49, + "volumefrom": 1868.24, + "volumeto": 12614000.31 + }, + { + "time": 1531144800, + "close": 6728.75, + "high": 6729.07, + "low": 6717, + "open": 6727.41, + "volumefrom": 1481.69, + "volumeto": 10032564.2 + }, + { + "time": 1531148400, + "close": 6722.57, + "high": 6737.7, + "low": 6721.18, + "open": 6728.75, + "volumefrom": 1594.78, + "volumeto": 10776229.52 + }, + { + "time": 1531152000, + "close": 6710.13, + "high": 6725, + "low": 6678.93, + "open": 6722.57, + "volumefrom": 2713.74, + "volumeto": 18305957.1 + }, + { + "time": 1531155600, + "close": 6697.09, + "high": 6712.33, + "low": 6677.61, + "open": 6710.13, + "volumefrom": 3340.27, + "volumeto": 22447322.98 + }, + { + "time": 1531159200, + "close": 6703.53, + "high": 6711.76, + "low": 6687.13, + "open": 6697.11, + "volumefrom": 1600.65, + "volumeto": 10753710.89 + }, + { + "time": 1531162800, + "close": 6716.41, + "high": 6719.86, + "low": 6698.36, + "open": 6703.53, + "volumefrom": 1347.06, + "volumeto": 9095142.98 + }, + { + "time": 1531166400, + "close": 6702.32, + "high": 6718.25, + "low": 6696.07, + "open": 6716.46, + "volumefrom": 1168.77, + "volumeto": 7905232.9 + }, + { + "time": 1531170000, + "close": 6722.62, + "high": 6724.47, + "low": 6696.55, + "open": 6702.49, + "volumefrom": 1400.96, + "volumeto": 9462854.68 + }, + { + "time": 1531173600, + "close": 6702.5, + "high": 6803.1, + "low": 6678.35, + "open": 6722.62, + "volumefrom": 5907.23, + "volumeto": 39855256.37 + }, + { + "time": 1531177200, + "close": 6668.84, + "high": 6707.67, + "low": 6625.58, + "open": 6702.5, + "volumefrom": 4680.63, + "volumeto": 31295949.44 + }, + { + "time": 1531180800, + "close": 6672.88, + "high": 6683.61, + "low": 6643.58, + "open": 6668.84, + "volumefrom": 2285.78, + "volumeto": 15281083.7 + }, + { + "time": 1531184400, + "close": 6655.67, + "high": 6678.06, + "low": 6655.67, + "open": 6672.88, + "volumefrom": 1541.5, + "volumeto": 10329286.72 + }, + { + "time": 1531188000, + "close": 6638.49, + "high": 6661.26, + "low": 6628.32, + "open": 6655.29, + "volumefrom": 2451.5, + "volumeto": 16344607.49 + }, + { + "time": 1531191600, + "close": 6639.2, + "high": 6656.36, + "low": 6635.24, + "open": 6638.53, + "volumefrom": 1457.85, + "volumeto": 9726365.65 + }, + { + "time": 1531195200, + "close": 6647.33, + "high": 6656.37, + "low": 6630.67, + "open": 6639.2, + "volumefrom": 1374.69, + "volumeto": 9185559.77 + }, + { + "time": 1531198800, + "close": 6629.46, + "high": 6652.19, + "low": 6628.04, + "open": 6647.33, + "volumefrom": 1614.18, + "volumeto": 10779743.34 + }, + { + "time": 1531202400, + "close": 6605.14, + "high": 6630.69, + "low": 6577.59, + "open": 6629.46, + "volumefrom": 5507.95, + "volumeto": 36449029.53 + }, + { + "time": 1531206000, + "close": 6606.67, + "high": 6612.45, + "low": 6592.53, + "open": 6604.38, + "volumefrom": 1739.22, + "volumeto": 11570214.54 + }, + { + "time": 1531209600, + "close": 6599.58, + "high": 6619.62, + "low": 6589.65, + "open": 6606.67, + "volumefrom": 1706.34, + "volumeto": 11336289.39 + }, + { + "time": 1531213200, + "close": 6448.91, + "high": 6599.53, + "low": 6443, + "open": 6599.53, + "volumefrom": 8469.1, + "volumeto": 55216106.52 + }, + { + "time": 1531216800, + "close": 6477.34, + "high": 6482.96, + "low": 6436.38, + "open": 6448.91, + "volumefrom": 4240.7, + "volumeto": 27484743.41 + }, + { + "time": 1531220400, + "close": 6366.8, + "high": 6477.35, + "low": 6331.28, + "open": 6477.32, + "volumefrom": 7837.09, + "volumeto": 50283889.36 + }, + { + "time": 1531224000, + "close": 6375.2, + "high": 6380.64, + "low": 6340.4, + "open": 6366.71, + "volumefrom": 3752.26, + "volumeto": 24006341.09 + }, + { + "time": 1531227600, + "close": 6389.33, + "high": 6399.65, + "low": 6362.89, + "open": 6375.47, + "volumefrom": 4272.56, + "volumeto": 27394449.92 + }, + { + "time": 1531231200, + "close": 6385.13, + "high": 6392.75, + "low": 6350.99, + "open": 6388.8, + "volumefrom": 3016.77, + "volumeto": 19301321.15 + }, + { + "time": 1531234800, + "close": 6386.13, + "high": 6392.51, + "low": 6374.96, + "open": 6384.5, + "volumefrom": 1937.58, + "volumeto": 12453402.15 + }, + { + "time": 1531238400, + "close": 6362.18, + "high": 6411.34, + "low": 6348.68, + "open": 6386.17, + "volumefrom": 3047.89, + "volumeto": 19482722.44 + }, + { + "time": 1531242000, + "close": 6374.69, + "high": 6382.17, + "low": 6350.48, + "open": 6362.18, + "volumefrom": 1884.61, + "volumeto": 12053801.31 + }, + { + "time": 1531245600, + "close": 6384.1, + "high": 6389.53, + "low": 6370.05, + "open": 6374.54, + "volumefrom": 1408.74, + "volumeto": 9045142.44 + }, + { + "time": 1531249200, + "close": 6377.46, + "high": 6385.16, + "low": 6366.94, + "open": 6384.1, + "volumefrom": 1585.99, + "volumeto": 10175354.9 + }, + { + "time": 1531252800, + "close": 6393.3, + "high": 6404.51, + "low": 6376.35, + "open": 6377.46, + "volumefrom": 2121.66, + "volumeto": 13609905.66 + }, + { + "time": 1531256400, + "close": 6376.49, + "high": 6409.04, + "low": 6375.92, + "open": 6393.3, + "volumefrom": 1721.38, + "volumeto": 11082330.97 + }, + { + "time": 1531260000, + "close": 6374.55, + "high": 6389.03, + "low": 6360.85, + "open": 6376.49, + "volumefrom": 1622.16, + "volumeto": 10390880.53 + }, + { + "time": 1531263600, + "close": 6306.85, + "high": 6374.98, + "low": 6277.23, + "open": 6374.57, + "volumefrom": 5915.82, + "volumeto": 37449570.74 + }, + { + "time": 1531267200, + "close": 6390.82, + "high": 6400.78, + "low": 6293.68, + "open": 6306.87, + "volumefrom": 4756.67, + "volumeto": 30336519.52 + }, + { + "time": 1531270800, + "close": 6371.22, + "high": 6395.35, + "low": 6363.64, + "open": 6391.5, + "volumefrom": 1582.43, + "volumeto": 10216055.54 + }, + { + "time": 1531274400, + "close": 6371.71, + "high": 6377.77, + "low": 6359.73, + "open": 6371.22, + "volumefrom": 996.81, + "volumeto": 6384469.16 + }, + { + "time": 1531278000, + "close": 6344.1, + "high": 6375.17, + "low": 6340.58, + "open": 6371.71, + "volumefrom": 1562.72, + "volumeto": 10012551.1 + }, + { + "time": 1531281600, + "close": 6354.55, + "high": 6365.17, + "low": 6328.48, + "open": 6344.1, + "volumefrom": 1924.77, + "volumeto": 12271764.03 + }, + { + "time": 1531285200, + "close": 6343.63, + "high": 6354.65, + "low": 6299.48, + "open": 6354.55, + "volumefrom": 2660.57, + "volumeto": 16960966.21 + }, + { + "time": 1531288800, + "close": 6322.76, + "high": 6346.18, + "low": 6293.82, + "open": 6343.7, + "volumefrom": 2773.56, + "volumeto": 17637160.77 + }, + { + "time": 1531292400, + "close": 6349.21, + "high": 6366.5, + "low": 6319.82, + "open": 6322.76, + "volumefrom": 2453.37, + "volumeto": 15690691.92 + }, + { + "time": 1531296000, + "close": 6378.34, + "high": 6379.27, + "low": 6348.49, + "open": 6349.19, + "volumefrom": 1655.21, + "volumeto": 10628920.08 + }, + { + "time": 1531299600, + "close": 6347, + "high": 6381.38, + "low": 6331.11, + "open": 6378.34, + "volumefrom": 2429.16, + "volumeto": 15529373.41 + }, + { + "time": 1531303200, + "close": 6352.68, + "high": 6357.32, + "low": 6334.49, + "open": 6347, + "volumefrom": 1985.1, + "volumeto": 12770865.32 + }, + { + "time": 1531306800, + "close": 6382.28, + "high": 6405.59, + "low": 6352.68, + "open": 6352.68, + "volumefrom": 2995.55, + "volumeto": 19354627.86 + }, + { + "time": 1531310400, + "close": 6382.92, + "high": 6394.94, + "low": 6367.72, + "open": 6382.28, + "volumefrom": 1714.28, + "volumeto": 11127145.13 + }, + { + "time": 1531314000, + "close": 6382.87, + "high": 6400.76, + "low": 6376.36, + "open": 6382.86, + "volumefrom": 3433.89, + "volumeto": 22184264.2 + }, + { + "time": 1531317600, + "close": 6379.44, + "high": 6386.68, + "low": 6353.64, + "open": 6382.87, + "volumefrom": 2410.65, + "volumeto": 15685628.46 + }, + { + "time": 1531321200, + "close": 6372.94, + "high": 6381.12, + "low": 6362.13, + "open": 6379.49, + "volumefrom": 1567.77, + "volumeto": 10133170.75 + }, + { + "time": 1531324800, + "close": 6358.27, + "high": 6377.44, + "low": 6343.04, + "open": 6373.01, + "volumefrom": 2425.19, + "volumeto": 15567078.81 + }, + { + "time": 1531328400, + "close": 6362.57, + "high": 6381.78, + "low": 6357.6, + "open": 6358.27, + "volumefrom": 1693.04, + "volumeto": 10895956.52 + }, + { + "time": 1531332000, + "close": 6362.43, + "high": 6364.89, + "low": 6349.89, + "open": 6362.72, + "volumefrom": 1000.74, + "volumeto": 6493713.28 + }, + { + "time": 1531335600, + "close": 6362.08, + "high": 6362.79, + "low": 6309.63, + "open": 6361.53, + "volumefrom": 3141.68, + "volumeto": 19980278.9 + }, + { + "time": 1531339200, + "close": 6370.26, + "high": 6387.51, + "low": 6358.77, + "open": 6362.08, + "volumefrom": 1514.63, + "volumeto": 9699597.33 + }, + { + "time": 1531342800, + "close": 6375.24, + "high": 6388.94, + "low": 6359.13, + "open": 6370.26, + "volumefrom": 1777.67, + "volumeto": 11389235.23 + }, + { + "time": 1531346400, + "close": 6380.98, + "high": 6390.48, + "low": 6363.56, + "open": 6375.24, + "volumefrom": 1208.06, + "volumeto": 7777066.7 + }, + { + "time": 1531350000, + "close": 6394.36, + "high": 6396.41, + "low": 6378.7, + "open": 6380.98, + "volumefrom": 1391.16, + "volumeto": 8940654.12 + }, + { + "time": 1531353600, + "close": 6380.65, + "high": 6394.93, + "low": 6368.83, + "open": 6394.36, + "volumefrom": 2531.03, + "volumeto": 16230024.11 + }, + { + "time": 1531357200, + "close": 6346.36, + "high": 6382.71, + "low": 6346.07, + "open": 6380.65, + "volumefrom": 1982.19, + "volumeto": 12695222.72 + }, + { + "time": 1531360800, + "close": 6343.99, + "high": 6356.45, + "low": 6319.1, + "open": 6346.36, + "volumefrom": 2057.78, + "volumeto": 13077618.21 + }, + { + "time": 1531364400, + "close": 6359.09, + "high": 6360.86, + "low": 6342.23, + "open": 6343.99, + "volumefrom": 897.82, + "volumeto": 5749807.24 + }, + { + "time": 1531368000, + "close": 6347.94, + "high": 6362.39, + "low": 6338.79, + "open": 6359.67, + "volumefrom": 1021.31, + "volumeto": 6544094.25 + }, + { + "time": 1531371600, + "close": 6340.93, + "high": 6348.42, + "low": 6315.71, + "open": 6348.04, + "volumefrom": 1119.58, + "volumeto": 7150597.29 + }, + { + "time": 1531375200, + "close": 6227.43, + "high": 6345.24, + "low": 6205.65, + "open": 6340.87, + "volumefrom": 8625.26, + "volumeto": 53848908.56 + }, + { + "time": 1531378800, + "close": 6190.11, + "high": 6233.46, + "low": 6167.51, + "open": 6227.43, + "volumefrom": 4634.39, + "volumeto": 28782141.54 + }, + { + "time": 1531382400, + "close": 6208.6, + "high": 6208.65, + "low": 6148.56, + "open": 6190.11, + "volumefrom": 5437.93, + "volumeto": 33669660.83 + }, + { + "time": 1531386000, + "close": 6196.07, + "high": 6214.48, + "low": 6188.93, + "open": 6208.6, + "volumefrom": 2931.86, + "volumeto": 18251378.85 + }, + { + "time": 1531389600, + "close": 6181.98, + "high": 6196.11, + "low": 6166.89, + "open": 6196.07, + "volumefrom": 2777.28, + "volumeto": 17214048.32 + }, + { + "time": 1531393200, + "close": 6174.11, + "high": 6191.39, + "low": 6149.38, + "open": 6181.47, + "volumefrom": 2418.54, + "volumeto": 14950407.61 + }, + { + "time": 1531396800, + "close": 6189.47, + "high": 6199.55, + "low": 6166.78, + "open": 6174.06, + "volumefrom": 2325.16, + "volumeto": 14428307.44 + }, + { + "time": 1531400400, + "close": 6191.18, + "high": 6196.09, + "low": 6171.38, + "open": 6189.47, + "volumefrom": 2226.22, + "volumeto": 13834016.16 + }, + { + "time": 1531404000, + "close": 6187.27, + "high": 6200.23, + "low": 6178.99, + "open": 6191.56, + "volumefrom": 2298.68, + "volumeto": 14317623.73 + }, + { + "time": 1531407600, + "close": 6168.96, + "high": 6191.39, + "low": 6166.56, + "open": 6187.43, + "volumefrom": 1457.68, + "volumeto": 9068058.02 + }, + { + "time": 1531411200, + "close": 6190.81, + "high": 6205.73, + "low": 6168.62, + "open": 6169, + "volumefrom": 2844.64, + "volumeto": 17702858.89 + }, + { + "time": 1531414800, + "close": 6190.09, + "high": 6201.86, + "low": 6174.34, + "open": 6190.81, + "volumefrom": 1676.25, + "volumeto": 10445786.42 + }, + { + "time": 1531418400, + "close": 6177.49, + "high": 6198.26, + "low": 6173, + "open": 6190.09, + "volumefrom": 1166.57, + "volumeto": 7312438.43 + }, + { + "time": 1531422000, + "close": 6183.09, + "high": 6188.18, + "low": 6160.27, + "open": 6177.53, + "volumefrom": 1704.06, + "volumeto": 10630764.8 + }, + { + "time": 1531425600, + "close": 6184.27, + "high": 6192.99, + "low": 6177.94, + "open": 6183.09, + "volumefrom": 1370.22, + "volumeto": 8563525.07 + }, + { + "time": 1531429200, + "close": 6175.03, + "high": 6185.31, + "low": 6163.74, + "open": 6184.27, + "volumefrom": 1293.66, + "volumeto": 8029608.45 + }, + { + "time": 1531432800, + "close": 6157.64, + "high": 6182.18, + "low": 6133.93, + "open": 6175.11, + "volumefrom": 2096.36, + "volumeto": 12961149.43 + }, + { + "time": 1531436400, + "close": 6253.6, + "high": 6270.29, + "low": 6084, + "open": 6157.64, + "volumefrom": 8660.9, + "volumeto": 53620136.26 + }, + { + "time": 1531440000, + "close": 6250.92, + "high": 6285.48, + "low": 6226.02, + "open": 6253.66, + "volumefrom": 3581.27, + "volumeto": 22511975.13 + }, + { + "time": 1531443600, + "close": 6234.36, + "high": 6257.81, + "low": 6233.23, + "open": 6250.92, + "volumefrom": 1133.42, + "volumeto": 7134076.13 + }, + { + "time": 1531447200, + "close": 6244.85, + "high": 6263.2, + "low": 6231.57, + "open": 6234.36, + "volumefrom": 1323.34, + "volumeto": 8326560.53 + }, + { + "time": 1531450800, + "close": 6252.59, + "high": 6257.13, + "low": 6244.34, + "open": 6244.85, + "volumefrom": 1213.84, + "volumeto": 7642556.22 + }, + { + "time": 1531454400, + "close": 6257.74, + "high": 6267.53, + "low": 6245.41, + "open": 6252.59, + "volumefrom": 2125.95, + "volumeto": 13403443.97 + }, + { + "time": 1531458000, + "close": 6256.03, + "high": 6263.1, + "low": 6247.57, + "open": 6257.74, + "volumefrom": 1300.98, + "volumeto": 8224538.73 + }, + { + "time": 1531461600, + "close": 6247.29, + "high": 6262, + "low": 6226.3, + "open": 6256.03, + "volumefrom": 1921.77, + "volumeto": 12119063.12 + }, + { + "time": 1531465200, + "close": 6251.84, + "high": 6259.07, + "low": 6243.49, + "open": 6247.29, + "volumefrom": 1528.39, + "volumeto": 9613110.57 + }, + { + "time": 1531468800, + "close": 6251.88, + "high": 6262.37, + "low": 6241.74, + "open": 6252.19, + "volumefrom": 1208.78, + "volumeto": 7617196.44 + }, + { + "time": 1531472400, + "close": 6247.12, + "high": 6259.72, + "low": 6245.05, + "open": 6251.88, + "volumefrom": 1194.4, + "volumeto": 7523559.74 + }, + { + "time": 1531476000, + "close": 6244.47, + "high": 6259.23, + "low": 6241.27, + "open": 6247.51, + "volumefrom": 1142.29, + "volumeto": 7201680.55 + }, + { + "time": 1531479600, + "close": 6253.97, + "high": 6264.53, + "low": 6241.99, + "open": 6244.47, + "volumefrom": 1027.83, + "volumeto": 6480971.52 + }, + { + "time": 1531483200, + "close": 6285.5, + "high": 6297.63, + "low": 6250.63, + "open": 6253.97, + "volumefrom": 2246.02, + "volumeto": 14149718.59 + }, + { + "time": 1531486800, + "close": 6249.46, + "high": 6286.98, + "low": 6246.99, + "open": 6285.5, + "volumefrom": 2180.22, + "volumeto": 13725967.18 + }, + { + "time": 1531490400, + "close": 6262.33, + "high": 6275.05, + "low": 6244.57, + "open": 6249.53, + "volumefrom": 1881.19, + "volumeto": 11834310.25 + }, + { + "time": 1531494000, + "close": 6271.75, + "high": 6277.86, + "low": 6253.82, + "open": 6262.43, + "volumefrom": 1777.67, + "volumeto": 11186281.6 + }, + { + "time": 1531497600, + "close": 6274.02, + "high": 6287.75, + "low": 6255.21, + "open": 6271.81, + "volumefrom": 1816.52, + "volumeto": 11447557.29 + }, + { + "time": 1531501200, + "close": 6279.63, + "high": 6284.74, + "low": 6264.41, + "open": 6274.02, + "volumefrom": 1391.67, + "volumeto": 8793588.78 + }, + { + "time": 1531504800, + "close": 6252.29, + "high": 6349.21, + "low": 6233.57, + "open": 6279.69, + "volumefrom": 5448.74, + "volumeto": 34330129.18 + }, + { + "time": 1531508400, + "close": 6184.59, + "high": 6255.66, + "low": 6180.03, + "open": 6252.27, + "volumefrom": 4946.27, + "volumeto": 30731212.69 + }, + { + "time": 1531512000, + "close": 6199.62, + "high": 6224.61, + "low": 6131.54, + "open": 6184.68, + "volumefrom": 5467.67, + "volumeto": 33890975.97 + }, + { + "time": 1531515600, + "close": 6228.26, + "high": 6240.15, + "low": 6196.46, + "open": 6199.62, + "volumefrom": 2459.39, + "volumeto": 15348000.07 + }, + { + "time": 1531519200, + "close": 6233.29, + "high": 6233.95, + "low": 6196.09, + "open": 6228.29, + "volumefrom": 1499.92, + "volumeto": 9371373.05 + }, + { + "time": 1531522800, + "close": 6229.83, + "high": 6255.45, + "low": 6212.3, + "open": 6233.29, + "volumefrom": 1146.89, + "volumeto": 7194424.68 + }, + { + "time": 1531526400, + "close": 6253.41, + "high": 6282.41, + "low": 6227.32, + "open": 6229.61, + "volumefrom": 1432.5, + "volumeto": 9020030.19 + }, + { + "time": 1531530000, + "close": 6246.63, + "high": 6288.44, + "low": 6230.07, + "open": 6253.41, + "volumefrom": 1279.28, + "volumeto": 8083202.45 + }, + { + "time": 1531533600, + "close": 6245.91, + "high": 6254.14, + "low": 6232.99, + "open": 6246.63, + "volumefrom": 581.84, + "volumeto": 3674209.8 + }, + { + "time": 1531537200, + "close": 6219.48, + "high": 6246.19, + "low": 6212.58, + "open": 6245.98, + "volumefrom": 859.69, + "volumeto": 5398704.65 + }, + { + "time": 1531540800, + "close": 6232.08, + "high": 6236.64, + "low": 6218.27, + "open": 6219.52, + "volumefrom": 573.05, + "volumeto": 3616448.09 + }, + { + "time": 1531544400, + "close": 6228.16, + "high": 6241.88, + "low": 6227.64, + "open": 6232.11, + "volumefrom": 670.38, + "volumeto": 4224030.4 + }, + { + "time": 1531548000, + "close": 6222.79, + "high": 6238.98, + "low": 6217.55, + "open": 6228.21, + "volumefrom": 579.04, + "volumeto": 3641279.22 + }, + { + "time": 1531551600, + "close": 6227.17, + "high": 6238.36, + "low": 6214.88, + "open": 6222.85, + "volumefrom": 882.9, + "volumeto": 5547597.69 + }, + { + "time": 1531555200, + "close": 6228.26, + "high": 6232.91, + "low": 6214.66, + "open": 6227.17, + "volumefrom": 988.93, + "volumeto": 6196216.22 + }, + { + "time": 1531558800, + "close": 6209.03, + "high": 6232.2, + "low": 6190.18, + "open": 6228.21, + "volumefrom": 1519.58, + "volumeto": 9477712.13 + }, + { + "time": 1531562400, + "close": 6226.68, + "high": 6228.3, + "low": 6208.77, + "open": 6209.03, + "volumefrom": 949.22, + "volumeto": 5943855.26 + }, + { + "time": 1531566000, + "close": 6243.66, + "high": 6253.98, + "low": 6226.6, + "open": 6226.69, + "volumefrom": 1139.81, + "volumeto": 7155449.92 + }, + { + "time": 1531569600, + "close": 6241.15, + "high": 6259.7, + "low": 6240.4, + "open": 6243.66, + "volumefrom": 1060.82, + "volumeto": 6674241.01 + }, + { + "time": 1531573200, + "close": 6246.82, + "high": 6246.93, + "low": 6234.35, + "open": 6241.15, + "volumefrom": 852.81, + "volumeto": 5362837.9 + }, + { + "time": 1531576800, + "close": 6248.17, + "high": 6256.15, + "low": 6240.57, + "open": 6246.82, + "volumefrom": 1054.42, + "volumeto": 6632178.53 + }, + { + "time": 1531580400, + "close": 6252.82, + "high": 6253.26, + "low": 6231.3, + "open": 6248.17, + "volumefrom": 1021.31, + "volumeto": 6443906.59 + }, + { + "time": 1531584000, + "close": 6275.9, + "high": 6277.6, + "low": 6250.64, + "open": 6252.94, + "volumefrom": 1887.92, + "volumeto": 11907239.67 + }, + { + "time": 1531587600, + "close": 6274.19, + "high": 6278.79, + "low": 6263.6, + "open": 6275.9, + "volumefrom": 1506.54, + "volumeto": 9519611.21 + }, + { + "time": 1531591200, + "close": 6250.67, + "high": 6300.03, + "low": 6234.92, + "open": 6274.19, + "volumefrom": 1357.48, + "volumeto": 8555230.38 + }, + { + "time": 1531594800, + "close": 6281.33, + "high": 6284.31, + "low": 6222.2, + "open": 6249.52, + "volumefrom": 1739.34, + "volumeto": 10926973.25 + }, + { + "time": 1531598400, + "close": 6286.29, + "high": 6332.46, + "low": 6236.22, + "open": 6281.79, + "volumefrom": 2968.3, + "volumeto": 18687874.52 + }, + { + "time": 1531602000, + "close": 6274.44, + "high": 6297.88, + "low": 6272.27, + "open": 6286.29, + "volumefrom": 887.98, + "volumeto": 5622374.02 + }, + { + "time": 1531605600, + "close": 6269.34, + "high": 6291.68, + "low": 6265.69, + "open": 6274.44, + "volumefrom": 1147.69, + "volumeto": 7235699.7 + }, + { + "time": 1531609200, + "close": 6268.75, + "high": 6280.66, + "low": 6268.3, + "open": 6269.52, + "volumefrom": 772.35, + "volumeto": 4869883.56 + }, + { + "time": 1531612800, + "close": 6264.31, + "high": 6275.51, + "low": 6245.75, + "open": 6268.32, + "volumefrom": 1234.34, + "volumeto": 7767086.98 + }, + { + "time": 1531616400, + "close": 6257.61, + "high": 6264.48, + "low": 6250.13, + "open": 6263.27, + "volumefrom": 840.15, + "volumeto": 5296830.09 + }, + { + "time": 1531620000, + "close": 6260.11, + "high": 6266.9, + "low": 6252.77, + "open": 6257.61, + "volumefrom": 811.65, + "volumeto": 5115797.52 + }, + { + "time": 1531623600, + "close": 6271.27, + "high": 6271.58, + "low": 6252.1, + "open": 6260.11, + "volumefrom": 877.38, + "volumeto": 5525653.33 + }, + { + "time": 1531627200, + "close": 6283.29, + "high": 6294.66, + "low": 6263.26, + "open": 6271.27, + "volumefrom": 922.72, + "volumeto": 5831628.28 + }, + { + "time": 1531630800, + "close": 6294.22, + "high": 6298.76, + "low": 6281, + "open": 6283.35, + "volumefrom": 857.09, + "volumeto": 5409531.91 + }, + { + "time": 1531634400, + "close": 6297.09, + "high": 6305.07, + "low": 6288.47, + "open": 6294.1, + "volumefrom": 857.95, + "volumeto": 5435064.44 + }, + { + "time": 1531638000, + "close": 6293.2, + "high": 6300.17, + "low": 6284.61, + "open": 6297.09, + "volumefrom": 944.41, + "volumeto": 5987349.78 + }, + { + "time": 1531641600, + "close": 6330.76, + "high": 6358.54, + "low": 6293.03, + "open": 6293.2, + "volumefrom": 2931.66, + "volumeto": 18574867.99 + }, + { + "time": 1531645200, + "close": 6318.81, + "high": 6344.93, + "low": 6311.71, + "open": 6329.99, + "volumefrom": 1429.16, + "volumeto": 9093020.53 + }, + { + "time": 1531648800, + "close": 6351.18, + "high": 6394.67, + "low": 6318.79, + "open": 6318.79, + "volumefrom": 3128.86, + "volumeto": 19933132.96 + }, + { + "time": 1531652400, + "close": 6365.58, + "high": 6374.77, + "low": 6348.07, + "open": 6351.18, + "volumefrom": 1806.75, + "volumeto": 11669063.36 + }, + { + "time": 1531656000, + "close": 6355.99, + "high": 6366.62, + "low": 6347.32, + "open": 6365.58, + "volumefrom": 1176.05, + "volumeto": 7516629.3 + }, + { + "time": 1531659600, + "close": 6348.13, + "high": 6355.99, + "low": 6348.13, + "open": 6355.99, + "volumefrom": 0, + "volumeto": 0 + } + ], + "TimeTo": 1531659600, + "TimeFrom": 1531054800, + "FirstValueInArray": true, + "ConversionType": { + "type": "direct", + "conversionSymbol": "" + } +} \ No newline at end of file diff --git a/examples/crypto-chart/package.json b/examples/crypto-chart/package.json index 7173b3494d..fd9b3c280f 100644 --- a/examples/crypto-chart/package.json +++ b/examples/crypto-chart/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -46,5 +41,8 @@ "transducers-stats" ], "screenshot": "examples/crypto-chart.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/crypto-chart/index.html b/examples/crypto-chart/public/index.html similarity index 90% rename from examples/crypto-chart/index.html rename to examples/crypto-chart/public/index.html index 2a9d97cbce..0f1d4be5ac 100644 --- a/examples/crypto-chart/index.html +++ b/examples/crypto-chart/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/crypto-chart/snowpack.config.js b/examples/crypto-chart/snowpack.config.js new file mode 100644 index 0000000000..e19f406e35 --- /dev/null +++ b/examples/crypto-chart/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/crypto-chart", + }, +}; diff --git a/examples/crypto-chart/src/static.d.ts b/examples/crypto-chart/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/crypto-chart/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/crypto-chart/tsconfig.json b/examples/crypto-chart/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/crypto-chart/tsconfig.json +++ b/examples/crypto-chart/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/devcards/.gitignore b/examples/devcards/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/devcards/.gitignore +++ b/examples/devcards/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/devcards/package.json b/examples/devcards/package.json index 17b2756717..1e8716ede5 100644 --- a/examples/devcards/package.json +++ b/examples/devcards/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -31,5 +26,8 @@ "atom", "hdom" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/devcards/index.html b/examples/devcards/public/index.html similarity index 94% rename from examples/devcards/index.html rename to examples/devcards/public/index.html index d44367df37..f3e635bf06 100644 --- a/examples/devcards/index.html +++ b/examples/devcards/public/index.html @@ -75,13 +75,13 @@ extension from Reagent Project examples).

- Total filesize: 19.3KB (7.4KB gzip'd) - see + Total filesize: 19.7KB (7.7KB gzip'd) - see source for more information.

- + diff --git a/examples/devcards/snowpack.config.js b/examples/devcards/snowpack.config.js new file mode 100644 index 0000000000..7b31b1e56a --- /dev/null +++ b/examples/devcards/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/devcards", + }, +}; diff --git a/examples/devcards/src/static.d.ts b/examples/devcards/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/devcards/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/devcards/tsconfig.json b/examples/devcards/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/devcards/tsconfig.json +++ b/examples/devcards/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/ellipse-proximity/.gitignore b/examples/ellipse-proximity/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/ellipse-proximity/.gitignore +++ b/examples/ellipse-proximity/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/ellipse-proximity/package.json b/examples/ellipse-proximity/package.json index 47a23ed099..ae376da13c 100644 --- a/examples/ellipse-proximity/package.json +++ b/examples/ellipse-proximity/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.1.0", - "typescript": "^3.9.7" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/geom-closest-point": "latest", @@ -39,5 +33,8 @@ "vectors" ], "screenshot": "examples/ellipse-proximity.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/ellipse-proximity/index.html b/examples/ellipse-proximity/public/index.html similarity index 93% rename from examples/ellipse-proximity/index.html rename to examples/ellipse-proximity/public/index.html index 118bb95535..e9e973128b 100644 --- a/examples/ellipse-proximity/index.html +++ b/examples/ellipse-proximity/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/ellipse-proximity/snowpack.config.js b/examples/ellipse-proximity/snowpack.config.js new file mode 100644 index 0000000000..6114e0d69b --- /dev/null +++ b/examples/ellipse-proximity/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/ellipse-proximity", + }, +}; diff --git a/examples/ellipse-proximity/src/static.d.ts b/examples/ellipse-proximity/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/ellipse-proximity/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/ellipse-proximity/src/webpack.d.ts b/examples/ellipse-proximity/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/ellipse-proximity/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/ellipse-proximity/tsconfig.json b/examples/ellipse-proximity/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/ellipse-proximity/tsconfig.json +++ b/examples/ellipse-proximity/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/ellipse-proximity/webpack.config.js b/examples/ellipse-proximity/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/ellipse-proximity/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/fft-synth/.gitignore b/examples/fft-synth/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/fft-synth/.gitignore +++ b/examples/fft-synth/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/fft-synth/package.json b/examples/fft-synth/package.json index 1e2d48428d..7d3a2ae2b7 100644 --- a/examples/fft-synth/package.json +++ b/examples/fft-synth/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/atom": "latest", @@ -45,5 +39,8 @@ "random" ], "screenshot": "examples/fft-synth.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/fft-synth/index.html b/examples/fft-synth/public/index.html similarity index 94% rename from examples/fft-synth/index.html rename to examples/fft-synth/public/index.html index 84e3df28e5..cd5ef14198 100644 --- a/examples/fft-synth/index.html +++ b/examples/fft-synth/public/index.html @@ -30,6 +30,6 @@ >Source code and info - + diff --git a/examples/fft-synth/snowpack.config.js b/examples/fft-synth/snowpack.config.js new file mode 100644 index 0000000000..04e376bfc3 --- /dev/null +++ b/examples/fft-synth/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/fft-synth", + }, +}; diff --git a/examples/fft-synth/src/static.d.ts b/examples/fft-synth/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/fft-synth/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/fft-synth/src/webpack.d.ts b/examples/fft-synth/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/fft-synth/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/fft-synth/tsconfig.json b/examples/fft-synth/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/fft-synth/tsconfig.json +++ b/examples/fft-synth/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/fft-synth/webpack.config.js b/examples/fft-synth/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/fft-synth/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/geom-convex-hull/.gitignore b/examples/geom-convex-hull/.gitignore index 77ca864e83..e228563433 100644 --- a/examples/geom-convex-hull/.gitignore +++ b/examples/geom-convex-hull/.gitignore @@ -1,6 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -!webpack.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/geom-convex-hull/package.json b/examples/geom-convex-hull/package.json index ac972b9331..9ee9d5ea24 100644 --- a/examples/geom-convex-hull/package.json +++ b/examples/geom-convex-hull/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/geom": "latest", @@ -34,5 +28,8 @@ "geom-hull" ], "screenshot": "examples/geom-convex-hull.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/geom-convex-hull/index.html b/examples/geom-convex-hull/public/index.html similarity index 92% rename from examples/geom-convex-hull/index.html rename to examples/geom-convex-hull/public/index.html index 49e150bfd2..89d806a4a8 100644 --- a/examples/geom-convex-hull/index.html +++ b/examples/geom-convex-hull/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/geom-convex-hull/snowpack.config.js b/examples/geom-convex-hull/snowpack.config.js new file mode 100644 index 0000000000..8d4fd4cb47 --- /dev/null +++ b/examples/geom-convex-hull/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/geom-convex-hull", + }, +}; diff --git a/examples/geom-convex-hull/src/static.d.ts b/examples/geom-convex-hull/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/geom-convex-hull/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/geom-convex-hull/src/webpack.d.ts b/examples/geom-convex-hull/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/geom-convex-hull/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/geom-convex-hull/tsconfig.json b/examples/geom-convex-hull/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/geom-convex-hull/tsconfig.json +++ b/examples/geom-convex-hull/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/geom-convex-hull/webpack.config.js b/examples/geom-convex-hull/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/geom-convex-hull/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/geom-fuzz-basics/.gitignore b/examples/geom-fuzz-basics/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/geom-fuzz-basics/.gitignore +++ b/examples/geom-fuzz-basics/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/geom-fuzz-basics/package.json b/examples/geom-fuzz-basics/package.json index bdca4e3d36..27617696c9 100644 --- a/examples/geom-fuzz-basics/package.json +++ b/examples/geom-fuzz-basics/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/adapt-dpi": "latest", @@ -36,5 +30,8 @@ "hiccup-canvas" ], "screenshot": "geom/geom-fuzz.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/geom-fuzz-basics/index.html b/examples/geom-fuzz-basics/public/index.html similarity index 92% rename from examples/geom-fuzz-basics/index.html rename to examples/geom-fuzz-basics/public/index.html index b5b121f0a2..6ded14b160 100644 --- a/examples/geom-fuzz-basics/index.html +++ b/examples/geom-fuzz-basics/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/geom-fuzz-basics/snowpack.config.js b/examples/geom-fuzz-basics/snowpack.config.js new file mode 100644 index 0000000000..6822cb8b32 --- /dev/null +++ b/examples/geom-fuzz-basics/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/geom-fuzz-basics", + }, +}; diff --git a/examples/geom-fuzz-basics/src/static.d.ts b/examples/geom-fuzz-basics/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/geom-fuzz-basics/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/geom-fuzz-basics/src/webpack.d.ts b/examples/geom-fuzz-basics/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/geom-fuzz-basics/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/geom-fuzz-basics/tsconfig.json b/examples/geom-fuzz-basics/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/geom-fuzz-basics/tsconfig.json +++ b/examples/geom-fuzz-basics/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/geom-fuzz-basics/webpack.config.js b/examples/geom-fuzz-basics/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/geom-fuzz-basics/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/geom-knn/.gitignore b/examples/geom-knn/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/geom-knn/.gitignore +++ b/examples/geom-knn/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/geom-knn/package.json b/examples/geom-knn/package.json index 830e6d4131..3880705856 100644 --- a/examples/geom-knn/package.json +++ b/examples/geom-knn/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/bench": "latest", @@ -39,5 +34,8 @@ "vectors" ], "screenshot": "examples/geom-knn.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/geom-knn/index.html b/examples/geom-knn/public/index.html similarity index 90% rename from examples/geom-knn/index.html rename to examples/geom-knn/public/index.html index 13b4ef8deb..311b0520c5 100644 --- a/examples/geom-knn/index.html +++ b/examples/geom-knn/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/geom-knn/snowpack.config.js b/examples/geom-knn/snowpack.config.js new file mode 100644 index 0000000000..38ba861bf9 --- /dev/null +++ b/examples/geom-knn/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/geom-knn", + }, +}; diff --git a/examples/geom-knn/src/index.ts b/examples/geom-knn/src/index.ts index ea92bb3963..cf1eeac7af 100644 --- a/examples/geom-knn/src/index.ts +++ b/examples/geom-knn/src/index.ts @@ -1,7 +1,7 @@ import { timedResult } from "@thi.ng/bench"; import { KdTreeMap } from "@thi.ng/geom-accel"; import { canvas } from "@thi.ng/hdom-canvas"; -import { StreamSync, sync, trigger } from "@thi.ng/rstream"; +import { CloseMode, StreamSync, sync, trigger } from "@thi.ng/rstream"; import { gestureStream } from "@thi.ng/rstream-gestures"; import { map, mapcat } from "@thi.ng/transducers"; import { updateDOM } from "@thi.ng/transducers-hdom"; @@ -95,13 +95,11 @@ const app = (main: StreamSync) => { // component's `init` method is called which attaches the above gesture // stream dynamically. the entire UI then only updates when there are new // user interactions... -const main = sync({ src: { trigger: trigger() } }); +const main = sync({ + src: { trigger: trigger() }, + closeIn: CloseMode.NEVER, +}); // transform result stream using the // root component fn and the hdom differential // update transducer main.transform(map(app(main)), updateDOM()); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} diff --git a/examples/geom-knn/src/static.d.ts b/examples/geom-knn/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/geom-knn/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/geom-knn/tsconfig.json b/examples/geom-knn/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/geom-knn/tsconfig.json +++ b/examples/geom-knn/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/geom-tessel/.gitignore b/examples/geom-tessel/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/geom-tessel/.gitignore +++ b/examples/geom-tessel/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/geom-tessel/package.json b/examples/geom-tessel/package.json index 15d894c8f7..567995f000 100644 --- a/examples/geom-tessel/package.json +++ b/examples/geom-tessel/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/compose": "latest", @@ -39,5 +34,8 @@ "geom-tessellate" ], "screenshot": "geom/tessel.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/geom-tessel/index.html b/examples/geom-tessel/public/index.html similarity index 90% rename from examples/geom-tessel/index.html rename to examples/geom-tessel/public/index.html index f2cab2b4a3..1560d45bad 100644 --- a/examples/geom-tessel/index.html +++ b/examples/geom-tessel/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/geom-tessel/snowpack.config.js b/examples/geom-tessel/snowpack.config.js new file mode 100644 index 0000000000..4529dc0772 --- /dev/null +++ b/examples/geom-tessel/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/geom-tessel", + }, +}; diff --git a/examples/geom-tessel/src/index.ts b/examples/geom-tessel/src/index.ts index e466fc03be..a7a2d6b7d2 100644 --- a/examples/geom-tessel/src/index.ts +++ b/examples/geom-tessel/src/index.ts @@ -112,9 +112,3 @@ const main = sync({ }), updateDOM() ); - -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} diff --git a/examples/geom-tessel/src/static.d.ts b/examples/geom-tessel/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/geom-tessel/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/geom-tessel/tsconfig.json b/examples/geom-tessel/tsconfig.json index 4710ad552b..48d558b4f8 100644 --- a/examples/geom-tessel/tsconfig.json +++ b/examples/geom-tessel/tsconfig.json @@ -1,12 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true, - "noUnusedLocals": false, - "noUnusedParameters": false - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/geom-voronoi-mst/.gitignore b/examples/geom-voronoi-mst/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/geom-voronoi-mst/.gitignore +++ b/examples/geom-voronoi-mst/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/geom-voronoi-mst/package.json b/examples/geom-voronoi-mst/package.json index b1a07da454..9f4cb740db 100644 --- a/examples/geom-voronoi-mst/package.json +++ b/examples/geom-voronoi-mst/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/adjacency": "latest", @@ -45,5 +39,8 @@ "poisson" ], "screenshot": "examples/geom-voronoi-mst.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/geom-voronoi-mst/index.html b/examples/geom-voronoi-mst/public/index.html similarity index 89% rename from examples/geom-voronoi-mst/index.html rename to examples/geom-voronoi-mst/public/index.html index e35ca8f784..8cfb910bbe 100644 --- a/examples/geom-voronoi-mst/index.html +++ b/examples/geom-voronoi-mst/public/index.html @@ -18,7 +18,7 @@ > -
+
Generating...
- + diff --git a/examples/geom-voronoi-mst/snowpack.config.js b/examples/geom-voronoi-mst/snowpack.config.js new file mode 100644 index 0000000000..8050f0f583 --- /dev/null +++ b/examples/geom-voronoi-mst/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/geom-voronoi-mst", + }, +}; diff --git a/examples/geom-voronoi-mst/src/index.ts b/examples/geom-voronoi-mst/src/index.ts index 14da01520e..53c1f37546 100644 --- a/examples/geom-voronoi-mst/src/index.ts +++ b/examples/geom-voronoi-mst/src/index.ts @@ -14,7 +14,7 @@ import { } from "@thi.ng/geom"; import { KdTreeMap, KdTreeSet } from "@thi.ng/geom-accel"; import { DVMesh } from "@thi.ng/geom-voronoi"; -import { renderOnce } from "@thi.ng/hdom"; +import { clearDOM, renderOnce } from "@thi.ng/hdom"; import { canvas } from "@thi.ng/hdom-canvas"; import { fit } from "@thi.ng/math"; import { samplePoisson } from "@thi.ng/poisson"; @@ -84,6 +84,8 @@ const _mst = timed(() => { ).map((e) => line(e[2], e[3])); }); +clearDOM(document.getElementById("app")!); + renderOnce([ canvas, { width: W, height: W }, diff --git a/examples/geom-voronoi-mst/src/static.d.ts b/examples/geom-voronoi-mst/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/geom-voronoi-mst/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/geom-voronoi-mst/tsconfig.json b/examples/geom-voronoi-mst/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/geom-voronoi-mst/tsconfig.json +++ b/examples/geom-voronoi-mst/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/geom-voronoi-mst/webpack.config.js b/examples/geom-voronoi-mst/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/geom-voronoi-mst/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/gesture-analysis/.gitignore b/examples/gesture-analysis/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/gesture-analysis/.gitignore +++ b/examples/gesture-analysis/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/gesture-analysis/package.json b/examples/gesture-analysis/package.json index fab3eefd7e..67572d0a57 100644 --- a/examples/gesture-analysis/package.json +++ b/examples/gesture-analysis/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/arrays": "latest", @@ -41,5 +35,8 @@ "vectors" ], "screenshot": "examples/gesture-analysis.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/gesture-analysis/index.html b/examples/gesture-analysis/public/index.html similarity index 91% rename from examples/gesture-analysis/index.html rename to examples/gesture-analysis/public/index.html index b76376563a..9b3ac0f42e 100644 --- a/examples/gesture-analysis/index.html +++ b/examples/gesture-analysis/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/gesture-analysis/snowpack.config.js b/examples/gesture-analysis/snowpack.config.js new file mode 100644 index 0000000000..31b9ba8238 --- /dev/null +++ b/examples/gesture-analysis/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/gesture-analysis", + }, +}; diff --git a/examples/gesture-analysis/src/static.d.ts b/examples/gesture-analysis/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/gesture-analysis/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/gesture-analysis/tsconfig.json b/examples/gesture-analysis/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/gesture-analysis/tsconfig.json +++ b/examples/gesture-analysis/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/gesture-analysis/webpack.config.js b/examples/gesture-analysis/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/gesture-analysis/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/grid-iterators/.gitignore b/examples/grid-iterators/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/grid-iterators/.gitignore +++ b/examples/grid-iterators/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/grid-iterators/package.json b/examples/grid-iterators/package.json index 50c36f104e..61fa310a82 100644 --- a/examples/grid-iterators/package.json +++ b/examples/grid-iterators/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/color": "latest", @@ -34,5 +28,8 @@ "grid-iterators" ], "screenshot": "examples/grid-iterators.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/grid-iterators/index.html b/examples/grid-iterators/public/index.html similarity index 92% rename from examples/grid-iterators/index.html rename to examples/grid-iterators/public/index.html index e0e355af06..ef81ffeb2a 100644 --- a/examples/grid-iterators/index.html +++ b/examples/grid-iterators/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/grid-iterators/snowpack.config.js b/examples/grid-iterators/snowpack.config.js new file mode 100644 index 0000000000..422503b7aa --- /dev/null +++ b/examples/grid-iterators/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/grid-iterators", + }, +}; diff --git a/examples/grid-iterators/src/static.d.ts b/examples/grid-iterators/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/grid-iterators/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/grid-iterators/src/webpack.d.ts b/examples/grid-iterators/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/grid-iterators/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/grid-iterators/tsconfig.json b/examples/grid-iterators/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/grid-iterators/tsconfig.json +++ b/examples/grid-iterators/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/grid-iterators/webpack.config.js b/examples/grid-iterators/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/grid-iterators/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-basics/.gitignore b/examples/hdom-basics/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-basics/.gitignore +++ b/examples/hdom-basics/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-basics/package.json b/examples/hdom-basics/package.json index 5ae4d4297e..4836746491 100644 --- a/examples/hdom-basics/package.json +++ b/examples/hdom-basics/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest" @@ -23,5 +18,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-basics/index.html b/examples/hdom-basics/public/index.html similarity index 90% rename from examples/hdom-basics/index.html rename to examples/hdom-basics/public/index.html index 7decd27244..f3c7bed80c 100644 --- a/examples/hdom-basics/index.html +++ b/examples/hdom-basics/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hdom-basics/snowpack.config.js b/examples/hdom-basics/snowpack.config.js new file mode 100644 index 0000000000..d1238ae89b --- /dev/null +++ b/examples/hdom-basics/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-basics", + }, +}; diff --git a/examples/hdom-basics/src/static.d.ts b/examples/hdom-basics/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-basics/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-basics/tsconfig.json b/examples/hdom-basics/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-basics/tsconfig.json +++ b/examples/hdom-basics/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-benchmark/.gitignore b/examples/hdom-benchmark/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-benchmark/.gitignore +++ b/examples/hdom-benchmark/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-benchmark/package.json b/examples/hdom-benchmark/package.json index 2660c66422..98c784cc06 100644 --- a/examples/hdom-benchmark/package.json +++ b/examples/hdom-benchmark/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -30,5 +25,8 @@ }, "thi.ng": { "screenshot": "examples/hdom-benchmark.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-benchmark/index.html b/examples/hdom-benchmark/public/index.html similarity index 95% rename from examples/hdom-benchmark/index.html rename to examples/hdom-benchmark/public/index.html index e6e709a190..4452946ca9 100644 --- a/examples/hdom-benchmark/index.html +++ b/examples/hdom-benchmark/public/index.html @@ -57,6 +57,6 @@ >@thi.ng/hdom. - + diff --git a/examples/hdom-benchmark/snowpack.config.js b/examples/hdom-benchmark/snowpack.config.js new file mode 100644 index 0000000000..c35ddf8a41 --- /dev/null +++ b/examples/hdom-benchmark/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-benchmark", + }, +}; diff --git a/examples/hdom-benchmark/src/static.d.ts b/examples/hdom-benchmark/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-benchmark/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-benchmark/tsconfig.json b/examples/hdom-benchmark/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-benchmark/tsconfig.json +++ b/examples/hdom-benchmark/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-benchmark/webpack.config.js b/examples/hdom-benchmark/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-benchmark/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-benchmark2/.gitignore b/examples/hdom-benchmark2/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-benchmark2/.gitignore +++ b/examples/hdom-benchmark2/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-benchmark2/package.json b/examples/hdom-benchmark2/package.json index cfd2149547..49f6d5a569 100644 --- a/examples/hdom-benchmark2/package.json +++ b/examples/hdom-benchmark2/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/binary": "latest", @@ -38,5 +33,8 @@ "transducers" ], "screenshot": "examples/hdom-benchmark2.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-benchmark2/index.html b/examples/hdom-benchmark2/public/index.html similarity index 90% rename from examples/hdom-benchmark2/index.html rename to examples/hdom-benchmark2/public/index.html index de4da53212..c096dd9322 100644 --- a/examples/hdom-benchmark2/index.html +++ b/examples/hdom-benchmark2/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hdom-benchmark2/snowpack.config.js b/examples/hdom-benchmark2/snowpack.config.js new file mode 100644 index 0000000000..1d09027467 --- /dev/null +++ b/examples/hdom-benchmark2/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-benchmark2", + }, +}; diff --git a/examples/hdom-benchmark2/src/index.ts b/examples/hdom-benchmark2/src/index.ts index 18fe426304..bfc2d1cf80 100644 --- a/examples/hdom-benchmark2/src/index.ts +++ b/examples/hdom-benchmark2/src/index.ts @@ -161,7 +161,7 @@ const deltaOpts = [ ...map((i) => [i, i], [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]), ]; -const cancel = start(() => { +start(() => { frame++; return [ "div.ma3.code.f7", @@ -218,8 +218,3 @@ const cancel = start(() => { ], ]; }); - -const hot = (module).hot; -if (hot) { - hot.dispose(cancel); -} diff --git a/examples/hdom-benchmark2/src/static.d.ts b/examples/hdom-benchmark2/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-benchmark2/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-benchmark2/tsconfig.json b/examples/hdom-benchmark2/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-benchmark2/tsconfig.json +++ b/examples/hdom-benchmark2/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-benchmark2/webpack.config.js b/examples/hdom-benchmark2/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-benchmark2/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-canvas-clock/.gitignore b/examples/hdom-canvas-clock/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-canvas-clock/.gitignore +++ b/examples/hdom-canvas-clock/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-canvas-clock/package.json b/examples/hdom-canvas-clock/package.json index 360ae1dc89..73adbceef3 100644 --- a/examples/hdom-canvas-clock/package.json +++ b/examples/hdom-canvas-clock/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -36,5 +31,8 @@ "vectors" ], "screenshot": "examples/hdom-canvas-clock.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-canvas-clock/index.html b/examples/hdom-canvas-clock/public/index.html similarity index 90% rename from examples/hdom-canvas-clock/index.html rename to examples/hdom-canvas-clock/public/index.html index 37243153cf..63fa12e4cf 100644 --- a/examples/hdom-canvas-clock/index.html +++ b/examples/hdom-canvas-clock/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hdom-canvas-clock/snowpack.config.js b/examples/hdom-canvas-clock/snowpack.config.js new file mode 100644 index 0000000000..4fb1c0d83b --- /dev/null +++ b/examples/hdom-canvas-clock/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-canvas-clock", + }, +}; diff --git a/examples/hdom-canvas-clock/src/index.ts b/examples/hdom-canvas-clock/src/index.ts index d5aad206e9..ed5db31c36 100644 --- a/examples/hdom-canvas-clock/src/index.ts +++ b/examples/hdom-canvas-clock/src/index.ts @@ -45,7 +45,7 @@ const hand = ( ]; }; -const cancel = start(() => { +start(() => { const now = new Date(); const t = now.getTime() / 1000 - now.getTimezoneOffset() * 60; const sec = (t % 60) / 60; @@ -124,8 +124,3 @@ const cancel = start(() => { ], ]; }); - -const hot = (module).hot; -if (hot) { - hot.dispose(cancel); -} diff --git a/examples/hdom-canvas-clock/src/static.d.ts b/examples/hdom-canvas-clock/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-canvas-clock/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-canvas-clock/tsconfig.json b/examples/hdom-canvas-clock/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-canvas-clock/tsconfig.json +++ b/examples/hdom-canvas-clock/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-canvas-draw/.gitignore b/examples/hdom-canvas-draw/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-canvas-draw/.gitignore +++ b/examples/hdom-canvas-draw/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-canvas-draw/package.json b/examples/hdom-canvas-draw/package.json index 886a239d1c..efd924d9af 100644 --- a/examples/hdom-canvas-draw/package.json +++ b/examples/hdom-canvas-draw/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom-canvas": "latest", @@ -41,5 +36,8 @@ "vectors" ], "screenshot": "examples/hdom-canvas-draw.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-canvas-draw/index.html b/examples/hdom-canvas-draw/public/index.html similarity index 90% rename from examples/hdom-canvas-draw/index.html rename to examples/hdom-canvas-draw/public/index.html index ef1c6cafce..08046be249 100644 --- a/examples/hdom-canvas-draw/index.html +++ b/examples/hdom-canvas-draw/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hdom-canvas-draw/snowpack.config.js b/examples/hdom-canvas-draw/snowpack.config.js new file mode 100644 index 0000000000..cbff5a5f79 --- /dev/null +++ b/examples/hdom-canvas-draw/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-canvas-draw", + }, +}; diff --git a/examples/hdom-canvas-draw/src/index.ts b/examples/hdom-canvas-draw/src/index.ts index d0a1ea6b03..adc86b2452 100644 --- a/examples/hdom-canvas-draw/src/index.ts +++ b/examples/hdom-canvas-draw/src/index.ts @@ -1,6 +1,6 @@ import { canvas } from "@thi.ng/hdom-canvas"; import { HALF_PI, PI } from "@thi.ng/math"; -import { StreamSync, sync, trigger } from "@thi.ng/rstream"; +import { CloseMode, StreamSync, sync, trigger } from "@thi.ng/rstream"; import { GestureEvent, gestureStream, @@ -143,7 +143,10 @@ const app = (main: StreamSync) => { // component's `init` method is called which attaches the above gesture // stream dynamically. the entire UI then only updates when there are new // user interactions... -const main = sync({ src: { trigger: trigger() } }); +const main = sync({ + src: { trigger: trigger() }, + closeIn: CloseMode.NEVER, +}); // transform result stream using the // root component fn and the hdom differential // update transducer diff --git a/examples/hdom-canvas-draw/src/static.d.ts b/examples/hdom-canvas-draw/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-canvas-draw/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-canvas-draw/tsconfig.json b/examples/hdom-canvas-draw/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-canvas-draw/tsconfig.json +++ b/examples/hdom-canvas-draw/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-canvas-particles/.gitignore b/examples/hdom-canvas-particles/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-canvas-particles/.gitignore +++ b/examples/hdom-canvas-particles/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-canvas-particles/package.json b/examples/hdom-canvas-particles/package.json index a24644bfae..a41a9f61b3 100644 --- a/examples/hdom-canvas-particles/package.json +++ b/examples/hdom-canvas-particles/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/compose": "latest", @@ -42,5 +36,8 @@ "vectors" ], "screenshot": "examples/hdom-canvas-particles.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-canvas-particles/index.html b/examples/hdom-canvas-particles/public/index.html similarity index 93% rename from examples/hdom-canvas-particles/index.html rename to examples/hdom-canvas-particles/public/index.html index c6d6ad5a5c..058b02658b 100644 --- a/examples/hdom-canvas-particles/index.html +++ b/examples/hdom-canvas-particles/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/hdom-canvas-particles/snowpack.config.js b/examples/hdom-canvas-particles/snowpack.config.js new file mode 100644 index 0000000000..69f8037d8c --- /dev/null +++ b/examples/hdom-canvas-particles/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-canvas-particles", + }, +}; diff --git a/examples/hdom-canvas-particles/src/index.ts b/examples/hdom-canvas-particles/src/index.ts index 4cd05f868c..bd4a6e4afe 100644 --- a/examples/hdom-canvas-particles/src/index.ts +++ b/examples/hdom-canvas-particles/src/index.ts @@ -128,9 +128,4 @@ const app = () => { }; }; -const cancel = start(app()); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app()); diff --git a/examples/hdom-canvas-particles/src/static.d.ts b/examples/hdom-canvas-particles/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-canvas-particles/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-canvas-particles/src/webpack.d.ts b/examples/hdom-canvas-particles/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/hdom-canvas-particles/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/hdom-canvas-particles/tsconfig.json b/examples/hdom-canvas-particles/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/hdom-canvas-particles/tsconfig.json +++ b/examples/hdom-canvas-particles/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-canvas-particles/webpack.config.js b/examples/hdom-canvas-particles/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-canvas-particles/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-canvas-shapes/.gitignore b/examples/hdom-canvas-shapes/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-canvas-shapes/.gitignore +++ b/examples/hdom-canvas-shapes/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-canvas-shapes/package.json b/examples/hdom-canvas-shapes/package.json index 6ee1c2018b..a1ec771af9 100644 --- a/examples/hdom-canvas-shapes/package.json +++ b/examples/hdom-canvas-shapes/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/color": "latest", @@ -51,5 +46,8 @@ "vectors" ], "screenshot": "hdom-canvas/hdom-canvas-shapes-results.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-canvas-shapes/index.html b/examples/hdom-canvas-shapes/public/index.html similarity index 90% rename from examples/hdom-canvas-shapes/index.html rename to examples/hdom-canvas-shapes/public/index.html index 3a8d5142b5..f58c11bc62 100644 --- a/examples/hdom-canvas-shapes/index.html +++ b/examples/hdom-canvas-shapes/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hdom-canvas-shapes/snowpack.config.js b/examples/hdom-canvas-shapes/snowpack.config.js new file mode 100644 index 0000000000..bdae2101cd --- /dev/null +++ b/examples/hdom-canvas-shapes/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-canvas-shapes", + }, +}; diff --git a/examples/hdom-canvas-shapes/src/index.ts b/examples/hdom-canvas-shapes/src/index.ts index b80c287850..e40da4456e 100644 --- a/examples/hdom-canvas-shapes/src/index.ts +++ b/examples/hdom-canvas-shapes/src/index.ts @@ -11,7 +11,7 @@ import { fromRAF, stream, Subscription, sync } from "@thi.ng/rstream"; import { map, range, repeatedly } from "@thi.ng/transducers"; import { updateDOM } from "@thi.ng/transducers-hdom"; import { addN } from "@thi.ng/vectors"; -import logo from "../assets/logo-64.png"; +import logo from "./logo-64.png"; // for testing SVG conversion @@ -397,10 +397,10 @@ selection.next( : "shape morph" ); -// HMR handling -// terminate `scene` rstream to avoid multiple running instances after HMR -// (this will also terminate all attached child streams/subscriptions) -const hot = (module).hot; -if (hot) { - hot.dispose(() => scene.done()); -} +// // HMR handling +// // terminate `scene` rstream to avoid multiple running instances after HMR +// // (this will also terminate all attached child streams/subscriptions) +// const hot = (module).hot; +// if (hot) { +// hot.dispose(() => scene.done()); +// } diff --git a/examples/hdom-canvas-shapes/assets/logo-64.png b/examples/hdom-canvas-shapes/src/logo-64.png similarity index 100% rename from examples/hdom-canvas-shapes/assets/logo-64.png rename to examples/hdom-canvas-shapes/src/logo-64.png diff --git a/examples/hdom-canvas-shapes/src/static.d.ts b/examples/hdom-canvas-shapes/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-canvas-shapes/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-canvas-shapes/tsconfig.json b/examples/hdom-canvas-shapes/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-canvas-shapes/tsconfig.json +++ b/examples/hdom-canvas-shapes/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-dropdown-fuzzy/.gitignore b/examples/hdom-dropdown-fuzzy/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-dropdown-fuzzy/.gitignore +++ b/examples/hdom-dropdown-fuzzy/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-dropdown-fuzzy/package.json b/examples/hdom-dropdown-fuzzy/package.json index 3297372557..1b6347eaea 100644 --- a/examples/hdom-dropdown-fuzzy/package.json +++ b/examples/hdom-dropdown-fuzzy/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -40,5 +34,8 @@ "interceptors", "transducers" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-dropdown-fuzzy/index.html b/examples/hdom-dropdown-fuzzy/public/index.html similarity index 94% rename from examples/hdom-dropdown-fuzzy/index.html rename to examples/hdom-dropdown-fuzzy/public/index.html index ee269dd997..23b77eb0c2 100644 --- a/examples/hdom-dropdown-fuzzy/index.html +++ b/examples/hdom-dropdown-fuzzy/public/index.html @@ -34,6 +34,6 @@ >
- + diff --git a/examples/hdom-dropdown-fuzzy/snowpack.config.js b/examples/hdom-dropdown-fuzzy/snowpack.config.js new file mode 100644 index 0000000000..2a8c198265 --- /dev/null +++ b/examples/hdom-dropdown-fuzzy/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-dropdown-fuzzy", + }, +}; diff --git a/examples/hdom-dropdown-fuzzy/src/static.d.ts b/examples/hdom-dropdown-fuzzy/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-dropdown-fuzzy/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-dropdown-fuzzy/tsconfig.json b/examples/hdom-dropdown-fuzzy/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-dropdown-fuzzy/tsconfig.json +++ b/examples/hdom-dropdown-fuzzy/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-dropdown-fuzzy/webpack.config.js b/examples/hdom-dropdown-fuzzy/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-dropdown-fuzzy/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-dropdown/.gitignore b/examples/hdom-dropdown/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-dropdown/.gitignore +++ b/examples/hdom-dropdown/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-dropdown/package.json b/examples/hdom-dropdown/package.json index 2611fbaced..88affe20e0 100644 --- a/examples/hdom-dropdown/package.json +++ b/examples/hdom-dropdown/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -29,5 +23,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-dropdown/index.html b/examples/hdom-dropdown/public/index.html similarity index 94% rename from examples/hdom-dropdown/index.html rename to examples/hdom-dropdown/public/index.html index 4158b5006f..fdf5925af6 100644 --- a/examples/hdom-dropdown/index.html +++ b/examples/hdom-dropdown/public/index.html @@ -32,6 +32,6 @@ >
- + diff --git a/examples/hdom-dropdown/snowpack.config.js b/examples/hdom-dropdown/snowpack.config.js new file mode 100644 index 0000000000..b1d2570e1a --- /dev/null +++ b/examples/hdom-dropdown/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-dropdown", + }, +}; diff --git a/examples/hdom-dropdown/src/static.d.ts b/examples/hdom-dropdown/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-dropdown/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-dropdown/tsconfig.json b/examples/hdom-dropdown/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-dropdown/tsconfig.json +++ b/examples/hdom-dropdown/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-dropdown/webpack.config.js b/examples/hdom-dropdown/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-dropdown/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-dyn-context/.gitignore b/examples/hdom-dyn-context/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-dyn-context/.gitignore +++ b/examples/hdom-dyn-context/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-dyn-context/package.json b/examples/hdom-dyn-context/package.json index 289f01ba5d..4b25109106 100644 --- a/examples/hdom-dyn-context/package.json +++ b/examples/hdom-dyn-context/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/atom": "latest", @@ -24,5 +19,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-dyn-context/index.html b/examples/hdom-dyn-context/public/index.html similarity index 90% rename from examples/hdom-dyn-context/index.html rename to examples/hdom-dyn-context/public/index.html index 700bc164e9..fb6cd8f267 100644 --- a/examples/hdom-dyn-context/index.html +++ b/examples/hdom-dyn-context/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hdom-dyn-context/snowpack.config.js b/examples/hdom-dyn-context/snowpack.config.js new file mode 100644 index 0000000000..3ee559d3ea --- /dev/null +++ b/examples/hdom-dyn-context/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-dyn-context", + }, +}; diff --git a/examples/hdom-dyn-context/src/index.ts b/examples/hdom-dyn-context/src/index.ts index 87b5cbb9ad..0a2f746599 100644 --- a/examples/hdom-dyn-context/src/index.ts +++ b/examples/hdom-dyn-context/src/index.ts @@ -47,13 +47,7 @@ const app = ({ theme, themeID }: any) => [ ]; // kick off hdom render loop -const cancel = start(app, { +start(app, { ctx, autoDerefKeys: Object.keys(ctx), }); - -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} diff --git a/examples/hdom-dyn-context/src/static.d.ts b/examples/hdom-dyn-context/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-dyn-context/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-dyn-context/tsconfig.json b/examples/hdom-dyn-context/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-dyn-context/tsconfig.json +++ b/examples/hdom-dyn-context/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-elm/.gitignore b/examples/hdom-elm/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-elm/.gitignore +++ b/examples/hdom-elm/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-elm/package.json b/examples/hdom-elm/package.json index 304a8830a3..9da6294d81 100644 --- a/examples/hdom-elm/package.json +++ b/examples/hdom-elm/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -34,5 +28,8 @@ "hdom", "paths" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-elm/index.html b/examples/hdom-elm/public/index.html similarity index 95% rename from examples/hdom-elm/index.html rename to examples/hdom-elm/public/index.html index 1d77422a59..52113fcc2b 100644 --- a/examples/hdom-elm/index.html +++ b/examples/hdom-elm/public/index.html @@ -41,6 +41,6 @@

Hotkeys

>Source code - + diff --git a/examples/hdom-elm/snowpack.config.js b/examples/hdom-elm/snowpack.config.js new file mode 100644 index 0000000000..eb3f15ed7f --- /dev/null +++ b/examples/hdom-elm/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-elm", + }, +}; diff --git a/examples/hdom-elm/src/static.d.ts b/examples/hdom-elm/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-elm/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-elm/tsconfig.json b/examples/hdom-elm/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/hdom-elm/tsconfig.json +++ b/examples/hdom-elm/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-elm/webpack.config.js b/examples/hdom-elm/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-elm/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-inner-html/.gitignore b/examples/hdom-inner-html/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-inner-html/.gitignore +++ b/examples/hdom-inner-html/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-inner-html/package.json b/examples/hdom-inner-html/package.json index 1179f4a3ab..7ee106a877 100644 --- a/examples/hdom-inner-html/package.json +++ b/examples/hdom-inner-html/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "rimraf": "^2.6.3", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest" @@ -24,5 +18,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-inner-html/index.html b/examples/hdom-inner-html/public/index.html similarity index 90% rename from examples/hdom-inner-html/index.html rename to examples/hdom-inner-html/public/index.html index 884104920d..4c201c176d 100644 --- a/examples/hdom-inner-html/index.html +++ b/examples/hdom-inner-html/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/hdom-inner-html/snowpack.config.js b/examples/hdom-inner-html/snowpack.config.js new file mode 100644 index 0000000000..a05c78b688 --- /dev/null +++ b/examples/hdom-inner-html/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-inner-html", + }, +}; diff --git a/examples/hdom-inner-html/src/index.ts b/examples/hdom-inner-html/src/index.ts index ee99bc234c..37272a12f2 100644 --- a/examples/hdom-inner-html/src/index.ts +++ b/examples/hdom-inner-html/src/index.ts @@ -41,10 +41,4 @@ const app = () => { }; // kick off -const cancel = start(app()); - -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app()); diff --git a/examples/hdom-inner-html/src/static.d.ts b/examples/hdom-inner-html/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-inner-html/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-inner-html/tsconfig.json b/examples/hdom-inner-html/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/hdom-inner-html/tsconfig.json +++ b/examples/hdom-inner-html/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-local-render/.gitignore b/examples/hdom-local-render/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-local-render/.gitignore +++ b/examples/hdom-local-render/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-local-render/package.json b/examples/hdom-local-render/package.json index 3e91608a8e..a4a5583045 100644 --- a/examples/hdom-local-render/package.json +++ b/examples/hdom-local-render/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -26,5 +20,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-local-render/index.html b/examples/hdom-local-render/public/index.html similarity index 95% rename from examples/hdom-local-render/index.html rename to examples/hdom-local-render/public/index.html index c5860d45c5..ed210fd883 100644 --- a/examples/hdom-local-render/index.html +++ b/examples/hdom-local-render/public/index.html @@ -42,6 +42,6 @@

@thi.ng/hdom component local re-render

>Source code - + diff --git a/examples/hdom-local-render/snowpack.config.js b/examples/hdom-local-render/snowpack.config.js new file mode 100644 index 0000000000..828fdbaee5 --- /dev/null +++ b/examples/hdom-local-render/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-local-render", + }, +}; diff --git a/examples/hdom-local-render/src/static.d.ts b/examples/hdom-local-render/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-local-render/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-local-render/src/webpack.d.ts b/examples/hdom-local-render/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/hdom-local-render/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/hdom-local-render/tsconfig.json b/examples/hdom-local-render/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/hdom-local-render/tsconfig.json +++ b/examples/hdom-local-render/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-local-render/webpack.config.js b/examples/hdom-local-render/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-local-render/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-localstate/.gitignore b/examples/hdom-localstate/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-localstate/.gitignore +++ b/examples/hdom-localstate/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-localstate/package.json b/examples/hdom-localstate/package.json index 4b52c39971..76628f6f58 100644 --- a/examples/hdom-localstate/package.json +++ b/examples/hdom-localstate/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -24,5 +19,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-localstate/index.html b/examples/hdom-localstate/public/index.html similarity index 90% rename from examples/hdom-localstate/index.html rename to examples/hdom-localstate/public/index.html index bcab675f73..cf4101ec65 100644 --- a/examples/hdom-localstate/index.html +++ b/examples/hdom-localstate/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/hdom-localstate/snowpack.config.js b/examples/hdom-localstate/snowpack.config.js new file mode 100644 index 0000000000..c2f3e124e9 --- /dev/null +++ b/examples/hdom-localstate/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-localstate", + }, +}; diff --git a/examples/hdom-localstate/src/index.ts b/examples/hdom-localstate/src/index.ts index 6e0e92b2b6..6770d4bba9 100644 --- a/examples/hdom-localstate/src/index.ts +++ b/examples/hdom-localstate/src/index.ts @@ -46,9 +46,4 @@ const APP = [ ]; // start app and define context object skeleton -const cancel = start(APP, { ctx: { __local: {} } }); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(APP, { ctx: { __local: {} } }); diff --git a/examples/hdom-localstate/src/static.d.ts b/examples/hdom-localstate/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-localstate/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-localstate/tsconfig.json b/examples/hdom-localstate/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/hdom-localstate/tsconfig.json +++ b/examples/hdom-localstate/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-skip-nested/.gitignore b/examples/hdom-skip-nested/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-skip-nested/.gitignore +++ b/examples/hdom-skip-nested/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-skip-nested/package.json b/examples/hdom-skip-nested/package.json index 987f90bd8e..2c47a17602 100644 --- a/examples/hdom-skip-nested/package.json +++ b/examples/hdom-skip-nested/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest" @@ -24,5 +18,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-skip-nested/index.html b/examples/hdom-skip-nested/public/index.html similarity index 95% rename from examples/hdom-skip-nested/index.html rename to examples/hdom-skip-nested/public/index.html index a92ef05c02..790050333b 100644 --- a/examples/hdom-skip-nested/index.html +++ b/examples/hdom-skip-nested/public/index.html @@ -37,6 +37,6 @@ >Source code - + diff --git a/examples/hdom-skip-nested/snowpack.config.js b/examples/hdom-skip-nested/snowpack.config.js new file mode 100644 index 0000000000..d6ede912e1 --- /dev/null +++ b/examples/hdom-skip-nested/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-skip-nested", + }, +}; diff --git a/examples/hdom-skip-nested/src/index.ts b/examples/hdom-skip-nested/src/index.ts index 3c34e1fbce..23bfd8e16f 100644 --- a/examples/hdom-skip-nested/src/index.ts +++ b/examples/hdom-skip-nested/src/index.ts @@ -34,7 +34,7 @@ const button = () => setTimeout(() => { this.id++; this.enabled = true; - }, 500); + }, 1000); }, }, this.id, @@ -84,9 +84,4 @@ const app = () => { return ["div.sans-serif", [bt1, 0], [bt2, 100]]; }; -const cancel = start(app()); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app()); diff --git a/examples/hdom-skip-nested/src/static.d.ts b/examples/hdom-skip-nested/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-skip-nested/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-skip-nested/src/webpack.d.ts b/examples/hdom-skip-nested/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/hdom-skip-nested/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/hdom-skip-nested/tsconfig.json b/examples/hdom-skip-nested/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/hdom-skip-nested/tsconfig.json +++ b/examples/hdom-skip-nested/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-skip-nested/webpack.config.js b/examples/hdom-skip-nested/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-skip-nested/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-skip/.gitignore b/examples/hdom-skip/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-skip/.gitignore +++ b/examples/hdom-skip/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-skip/package.json b/examples/hdom-skip/package.json index 899372c594..8b931e11b0 100644 --- a/examples/hdom-skip/package.json +++ b/examples/hdom-skip/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest" @@ -23,5 +18,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-skip/index.html b/examples/hdom-skip/public/index.html similarity index 90% rename from examples/hdom-skip/index.html rename to examples/hdom-skip/public/index.html index 2e0ecc7bb8..5dac2864b1 100644 --- a/examples/hdom-skip/index.html +++ b/examples/hdom-skip/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hdom-skip/snowpack.config.js b/examples/hdom-skip/snowpack.config.js new file mode 100644 index 0000000000..320ed35cc1 --- /dev/null +++ b/examples/hdom-skip/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-skip", + }, +}; diff --git a/examples/hdom-skip/src/index.ts b/examples/hdom-skip/src/index.ts index d97026f6bf..a81b87129f 100644 --- a/examples/hdom-skip/src/index.ts +++ b/examples/hdom-skip/src/index.ts @@ -55,10 +55,4 @@ const app = { }; // kick off -const cancel = start([app]); - -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start([app]); diff --git a/examples/hdom-skip/src/static.d.ts b/examples/hdom-skip/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-skip/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-skip/tsconfig.json b/examples/hdom-skip/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-skip/tsconfig.json +++ b/examples/hdom-skip/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-theme-adr-0003/.gitignore b/examples/hdom-theme-adr-0003/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-theme-adr-0003/.gitignore +++ b/examples/hdom-theme-adr-0003/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-theme-adr-0003/package.json b/examples/hdom-theme-adr-0003/package.json index ea8847ebd9..974ce7691a 100644 --- a/examples/hdom-theme-adr-0003/package.json +++ b/examples/hdom-theme-adr-0003/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -25,5 +20,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-theme-adr-0003/index.html b/examples/hdom-theme-adr-0003/public/index.html similarity index 92% rename from examples/hdom-theme-adr-0003/index.html rename to examples/hdom-theme-adr-0003/public/index.html index fa651c4e73..0cb3590cdc 100644 --- a/examples/hdom-theme-adr-0003/index.html +++ b/examples/hdom-theme-adr-0003/public/index.html @@ -25,6 +25,6 @@
- + diff --git a/examples/hdom-theme-adr-0003/snowpack.config.js b/examples/hdom-theme-adr-0003/snowpack.config.js new file mode 100644 index 0000000000..6b16ac994d --- /dev/null +++ b/examples/hdom-theme-adr-0003/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-theme-adr-0003", + }, +}; diff --git a/examples/hdom-theme-adr-0003/src/static.d.ts b/examples/hdom-theme-adr-0003/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-theme-adr-0003/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-theme-adr-0003/tsconfig.json b/examples/hdom-theme-adr-0003/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-theme-adr-0003/tsconfig.json +++ b/examples/hdom-theme-adr-0003/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-toggle/.gitignore b/examples/hdom-toggle/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/hdom-toggle/.gitignore +++ b/examples/hdom-toggle/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-toggle/package.json b/examples/hdom-toggle/package.json index 5380018c44..eeac50417c 100644 --- a/examples/hdom-toggle/package.json +++ b/examples/hdom-toggle/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -29,5 +23,8 @@ "thi.ng": { "readme": true, "screenshot": "examples/hdom-toggle.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-toggle/index.html b/examples/hdom-toggle/public/index.html similarity index 92% rename from examples/hdom-toggle/index.html rename to examples/hdom-toggle/public/index.html index 9733d7eb3f..60f142719a 100644 --- a/examples/hdom-toggle/index.html +++ b/examples/hdom-toggle/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/hdom-toggle/snowpack.config.js b/examples/hdom-toggle/snowpack.config.js new file mode 100644 index 0000000000..9e16165900 --- /dev/null +++ b/examples/hdom-toggle/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-toggle", + }, +}; diff --git a/examples/hdom-toggle/src/index.ts b/examples/hdom-toggle/src/index.ts index 9a5f00df88..a73af23bba 100644 --- a/examples/hdom-toggle/src/index.ts +++ b/examples/hdom-toggle/src/index.ts @@ -70,7 +70,7 @@ const toggleGroup = (_: any, toggle: any) => [ ]), ]; -const cancel = start(() => [ +start(() => [ "div", [toggleGroup, toggleH], [toggleGroup, toggleHStroke], @@ -81,8 +81,3 @@ const cancel = start(() => [ [toggleGroup, toggleVSq], [toggleGroup, toggleVSqStroke], ]); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} diff --git a/examples/hdom-toggle/src/static.d.ts b/examples/hdom-toggle/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-toggle/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-toggle/src/webpack.d.ts b/examples/hdom-toggle/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/hdom-toggle/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/hdom-toggle/tsconfig.json b/examples/hdom-toggle/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/hdom-toggle/tsconfig.json +++ b/examples/hdom-toggle/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-toggle/webpack.config.js b/examples/hdom-toggle/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-toggle/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hdom-vscroller/.gitignore b/examples/hdom-vscroller/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hdom-vscroller/.gitignore +++ b/examples/hdom-vscroller/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hdom-vscroller/package.json b/examples/hdom-vscroller/package.json index 322c82841f..ef2cd7b870 100644 --- a/examples/hdom-vscroller/package.json +++ b/examples/hdom-vscroller/package.json @@ -6,16 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "rimraf": "^2.6.3", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -27,5 +20,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hdom-vscroller/index.html b/examples/hdom-vscroller/public/index.html similarity index 90% rename from examples/hdom-vscroller/index.html rename to examples/hdom-vscroller/public/index.html index b0c13f8488..8d4b18f3f7 100644 --- a/examples/hdom-vscroller/index.html +++ b/examples/hdom-vscroller/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hdom-vscroller/snowpack.config.js b/examples/hdom-vscroller/snowpack.config.js new file mode 100644 index 0000000000..8b219cfdce --- /dev/null +++ b/examples/hdom-vscroller/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hdom-vscroller", + }, +}; diff --git a/examples/hdom-vscroller/src/index.ts b/examples/hdom-vscroller/src/index.ts index 627f697859..a1635a8937 100644 --- a/examples/hdom-vscroller/src/index.ts +++ b/examples/hdom-vscroller/src/index.ts @@ -10,8 +10,8 @@ type Package = [string, string]; const LOGO = _logo; const REPO_BASE = "https://github.com/thi-ng/umbrella/"; -const COMMITS: Commit[] = _commits; -const PACKAGES: Package[] = _packages; +const COMMITS = _commits; +const PACKAGES = _packages; let query = ""; let filtered = COMMITS; @@ -97,9 +97,4 @@ const app = () => [ }), ]; -const cancel = start(app); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app); diff --git a/examples/hdom-vscroller/src/static.d.ts b/examples/hdom-vscroller/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hdom-vscroller/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hdom-vscroller/src/webpack.d.ts b/examples/hdom-vscroller/src/webpack.d.ts deleted file mode 100644 index d9b7d4b9df..0000000000 --- a/examples/hdom-vscroller/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.json"; -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/hdom-vscroller/tsconfig.json b/examples/hdom-vscroller/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hdom-vscroller/tsconfig.json +++ b/examples/hdom-vscroller/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hdom-vscroller/webpack.config.js b/examples/hdom-vscroller/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hdom-vscroller/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hiccup-canvas-arcs/.gitignore b/examples/hiccup-canvas-arcs/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/hiccup-canvas-arcs/.gitignore +++ b/examples/hiccup-canvas-arcs/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hiccup-canvas-arcs/package.json b/examples/hiccup-canvas-arcs/package.json index 423eed62ff..81806d8242 100644 --- a/examples/hiccup-canvas-arcs/package.json +++ b/examples/hiccup-canvas-arcs/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/geom": "latest", @@ -35,5 +29,8 @@ "hiccup-canvas" ], "screenshot": "examples/hiccup-canvas-arcs.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hiccup-canvas-arcs/index.html b/examples/hiccup-canvas-arcs/public/index.html similarity index 93% rename from examples/hiccup-canvas-arcs/index.html rename to examples/hiccup-canvas-arcs/public/index.html index 3a9dd11abd..d842319fde 100644 --- a/examples/hiccup-canvas-arcs/index.html +++ b/examples/hiccup-canvas-arcs/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/hiccup-canvas-arcs/snowpack.config.js b/examples/hiccup-canvas-arcs/snowpack.config.js new file mode 100644 index 0000000000..2ba43400e2 --- /dev/null +++ b/examples/hiccup-canvas-arcs/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hiccup-canvas-arcs", + }, +}; diff --git a/examples/hiccup-canvas-arcs/src/static.d.ts b/examples/hiccup-canvas-arcs/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hiccup-canvas-arcs/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hiccup-canvas-arcs/src/webpack.d.ts b/examples/hiccup-canvas-arcs/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/hiccup-canvas-arcs/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/hiccup-canvas-arcs/tsconfig.json b/examples/hiccup-canvas-arcs/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/hiccup-canvas-arcs/tsconfig.json +++ b/examples/hiccup-canvas-arcs/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/hiccup-canvas-arcs/webpack.config.js b/examples/hiccup-canvas-arcs/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hiccup-canvas-arcs/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/hydrate-basics/.gitignore b/examples/hydrate-basics/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/hydrate-basics/.gitignore +++ b/examples/hydrate-basics/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/hydrate-basics/package.json b/examples/hydrate-basics/package.json index fe51aba864..e86c7b32f1 100644 --- a/examples/hydrate-basics/package.json +++ b/examples/hydrate-basics/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -33,5 +28,8 @@ "hdom", "hiccup" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/hydrate-basics/index.html b/examples/hydrate-basics/public/index.html similarity index 90% rename from examples/hydrate-basics/index.html rename to examples/hydrate-basics/public/index.html index 6c8e1a0146..484d2f447f 100644 --- a/examples/hydrate-basics/index.html +++ b/examples/hydrate-basics/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/hydrate-basics/snowpack.config.js b/examples/hydrate-basics/snowpack.config.js new file mode 100644 index 0000000000..29a3893873 --- /dev/null +++ b/examples/hydrate-basics/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/hydrate-basics", + }, +}; diff --git a/examples/hydrate-basics/src/static.d.ts b/examples/hydrate-basics/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/hydrate-basics/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/hydrate-basics/tsconfig.json b/examples/hydrate-basics/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/hydrate-basics/tsconfig.json +++ b/examples/hydrate-basics/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/imgui-basics/.gitignore b/examples/imgui-basics/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/imgui-basics/.gitignore +++ b/examples/imgui-basics/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/imgui-basics/package.json b/examples/imgui-basics/package.json index a71af5bb0d..2828d70a68 100644 --- a/examples/imgui-basics/package.json +++ b/examples/imgui-basics/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -37,5 +31,8 @@ "rstream-gestures" ], "screenshot": "examples/imgui-basics.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/imgui-basics/index.html b/examples/imgui-basics/public/index.html similarity index 93% rename from examples/imgui-basics/index.html rename to examples/imgui-basics/public/index.html index d741a75df6..909caa28ed 100644 --- a/examples/imgui-basics/index.html +++ b/examples/imgui-basics/public/index.html @@ -30,6 +30,6 @@ >Source code - + diff --git a/examples/imgui-basics/snowpack.config.js b/examples/imgui-basics/snowpack.config.js new file mode 100644 index 0000000000..789074bbe8 --- /dev/null +++ b/examples/imgui-basics/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/imgui-basics", + }, +}; diff --git a/examples/imgui-basics/src/static.d.ts b/examples/imgui-basics/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/imgui-basics/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/imgui-basics/src/webpack.d.ts b/examples/imgui-basics/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/imgui-basics/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/imgui-basics/tsconfig.json b/examples/imgui-basics/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/imgui-basics/tsconfig.json +++ b/examples/imgui-basics/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/imgui-basics/webpack.config.js b/examples/imgui-basics/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/imgui-basics/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/imgui/.gitignore b/examples/imgui/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/imgui/.gitignore +++ b/examples/imgui/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/imgui/package.json b/examples/imgui/package.json index da19bc9767..e3bec5feb4 100644 --- a/examples/imgui/package.json +++ b/examples/imgui/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/atom": "latest", @@ -53,5 +47,8 @@ "transducers-hdom" ], "screenshot": "imgui/imgui-all.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/imgui/index.html b/examples/imgui/public/index.html similarity index 96% rename from examples/imgui/index.html rename to examples/imgui/public/index.html index 76798ce4f3..c424c142ae 100644 --- a/examples/imgui/index.html +++ b/examples/imgui/public/index.html @@ -49,6 +49,6 @@ >Source code / Info - + diff --git a/examples/imgui/snowpack.config.js b/examples/imgui/snowpack.config.js new file mode 100644 index 0000000000..552281de88 --- /dev/null +++ b/examples/imgui/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/imgui", + }, +}; diff --git a/examples/imgui/src/index.ts b/examples/imgui/src/index.ts index 9239642865..743ddf5c43 100644 --- a/examples/imgui/src/index.ts +++ b/examples/imgui/src/index.ts @@ -559,9 +559,3 @@ main .subscribe(sidechainPartition(fromRAF())) // then apply main compoment function & apply hdom .transform(map(app()), updateDOM()); - -// HMR handling / cleanup -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} diff --git a/examples/imgui/src/static.d.ts b/examples/imgui/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/imgui/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/imgui/src/webpack.d.ts b/examples/imgui/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/imgui/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/imgui/tsconfig.json b/examples/imgui/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/imgui/tsconfig.json +++ b/examples/imgui/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/imgui/webpack.config.js b/examples/imgui/webpack.config.js deleted file mode 100644 index 08baf21e9f..0000000000 --- a/examples/imgui/webpack.config.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: false -}; diff --git a/examples/interceptor-basics/.gitignore b/examples/interceptor-basics/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/interceptor-basics/.gitignore +++ b/examples/interceptor-basics/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/interceptor-basics/package.json b/examples/interceptor-basics/package.json index 6500eb894e..06edf0b8c5 100644 --- a/examples/interceptor-basics/package.json +++ b/examples/interceptor-basics/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/atom": "latest", @@ -31,5 +26,8 @@ "readme": [ "interceptors" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/interceptor-basics/index.html b/examples/interceptor-basics/public/index.html similarity index 90% rename from examples/interceptor-basics/index.html rename to examples/interceptor-basics/public/index.html index 0df1112be3..468bb22fab 100644 --- a/examples/interceptor-basics/index.html +++ b/examples/interceptor-basics/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/interceptor-basics/snowpack.config.js b/examples/interceptor-basics/snowpack.config.js new file mode 100644 index 0000000000..6398dfcc79 --- /dev/null +++ b/examples/interceptor-basics/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/interceptor-basics", + }, +}; diff --git a/examples/interceptor-basics/src/static.d.ts b/examples/interceptor-basics/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/interceptor-basics/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/interceptor-basics/tsconfig.json b/examples/interceptor-basics/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/interceptor-basics/tsconfig.json +++ b/examples/interceptor-basics/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/interceptor-basics2/.gitignore b/examples/interceptor-basics2/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/interceptor-basics2/.gitignore +++ b/examples/interceptor-basics2/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/interceptor-basics2/package.json b/examples/interceptor-basics2/package.json index 09cc8b2dd3..c6bfb23184 100644 --- a/examples/interceptor-basics2/package.json +++ b/examples/interceptor-basics2/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -33,5 +28,8 @@ "interceptors", "paths" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/interceptor-basics2/index.html b/examples/interceptor-basics2/public/index.html similarity index 96% rename from examples/interceptor-basics2/index.html rename to examples/interceptor-basics2/public/index.html index 565d83b3a2..44f21e37df 100644 --- a/examples/interceptor-basics2/index.html +++ b/examples/interceptor-basics2/public/index.html @@ -51,7 +51,7 @@

- + \ No newline at end of file diff --git a/examples/interceptor-basics2/snowpack.config.js b/examples/interceptor-basics2/snowpack.config.js new file mode 100644 index 0000000000..422a154b67 --- /dev/null +++ b/examples/interceptor-basics2/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/interceptor-basics2", + }, +}; diff --git a/examples/interceptor-basics2/src/static.d.ts b/examples/interceptor-basics2/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/interceptor-basics2/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/interceptor-basics2/tsconfig.json b/examples/interceptor-basics2/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/interceptor-basics2/tsconfig.json +++ b/examples/interceptor-basics2/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/iso-plasma/.gitignore b/examples/iso-plasma/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/iso-plasma/.gitignore +++ b/examples/iso-plasma/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/iso-plasma/package.json b/examples/iso-plasma/package.json index 03101d5a93..d36945a687 100644 --- a/examples/iso-plasma/package.json +++ b/examples/iso-plasma/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "rimraf": "^2.6.3", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -43,5 +37,8 @@ "vectors" ], "screenshot": "geom/geom-isoline.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/iso-plasma/index.html b/examples/iso-plasma/public/index.html similarity index 90% rename from examples/iso-plasma/index.html rename to examples/iso-plasma/public/index.html index fdc98b618c..c5a303bfdc 100644 --- a/examples/iso-plasma/index.html +++ b/examples/iso-plasma/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/iso-plasma/snowpack.config.js b/examples/iso-plasma/snowpack.config.js new file mode 100644 index 0000000000..570bac1f9d --- /dev/null +++ b/examples/iso-plasma/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/iso-plasma", + }, +}; diff --git a/examples/iso-plasma/src/index.ts b/examples/iso-plasma/src/index.ts index c9a438d66a..8940e1c51b 100644 --- a/examples/iso-plasma/src/index.ts +++ b/examples/iso-plasma/src/index.ts @@ -60,10 +60,4 @@ const app = () => { }; // kick off -const cancel = start(app); - -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app); diff --git a/examples/iso-plasma/src/static.d.ts b/examples/iso-plasma/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/iso-plasma/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/iso-plasma/tsconfig.json b/examples/iso-plasma/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/iso-plasma/tsconfig.json +++ b/examples/iso-plasma/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/json-components/.gitignore b/examples/json-components/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/json-components/.gitignore +++ b/examples/json-components/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/json-components/package.json b/examples/json-components/package.json index f294c6e7c3..8577150eb4 100644 --- a/examples/json-components/package.json +++ b/examples/json-components/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -28,5 +23,8 @@ "thi.ng": { "readme": true, "screenshot": "examples/json-components.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/json-components/assets/editme.png b/examples/json-components/public/assets/editme.png similarity index 100% rename from examples/json-components/assets/editme.png rename to examples/json-components/public/assets/editme.png diff --git a/examples/json-components/index.html b/examples/json-components/public/index.html similarity index 98% rename from examples/json-components/index.html rename to examples/json-components/public/index.html index 999d3b0887..e933665f2c 100644 --- a/examples/json-components/index.html +++ b/examples/json-components/public/index.html @@ -139,6 +139,6 @@

JSON driven components

>@thi.ng/hdom. - + diff --git a/examples/json-components/snowpack.config.js b/examples/json-components/snowpack.config.js new file mode 100644 index 0000000000..72e53f993e --- /dev/null +++ b/examples/json-components/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/json-components", + }, +}; diff --git a/examples/json-components/src/static.d.ts b/examples/json-components/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/json-components/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/json-components/tsconfig.json b/examples/json-components/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/json-components/tsconfig.json +++ b/examples/json-components/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/login-form/.gitignore b/examples/login-form/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/login-form/.gitignore +++ b/examples/login-form/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/login-form/package.json b/examples/login-form/package.json index 43b723ffd3..c89545a251 100644 --- a/examples/login-form/package.json +++ b/examples/login-form/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/atom": "latest", @@ -29,5 +24,8 @@ }, "thi.ng": { "readme": true + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/login-form/index.html b/examples/login-form/public/index.html similarity index 93% rename from examples/login-form/index.html rename to examples/login-form/public/index.html index 4b2a70489d..67b67b6452 100644 --- a/examples/login-form/index.html +++ b/examples/login-form/public/index.html @@ -33,6 +33,6 @@
- + diff --git a/examples/login-form/snowpack.config.js b/examples/login-form/snowpack.config.js new file mode 100644 index 0000000000..376e76cddb --- /dev/null +++ b/examples/login-form/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/login-form", + }, +}; diff --git a/examples/login-form/src/index.ts b/examples/login-form/src/index.ts index 5535b89558..0c75fc724e 100644 --- a/examples/login-form/src/index.ts +++ b/examples/login-form/src/index.ts @@ -1,4 +1,4 @@ -import type { Nullable, Path } from "@thi.ng/api"; +import { exposeGlobal, Nullable, Path } from "@thi.ng/api"; import { defAtom, defView } from "@thi.ng/atom"; import { start } from "@thi.ng/hdom"; import { capitalize } from "@thi.ng/strings"; @@ -39,7 +39,7 @@ const setUser = (e: Event) => setValue(user.path, (e.target).value); const setValue = (path: Path, val: any) => db.resetInUnsafe(path, val); const loginUser = () => { - if (user.deref() === "admin") { + if (user.deref() === "Admin") { setError(null); setState("main"); } else { @@ -99,3 +99,5 @@ const currView = defView( // app root component // embedded view (will auto-deref) start(() => ["div", currView]); + +exposeGlobal("db", db); diff --git a/examples/login-form/src/static.d.ts b/examples/login-form/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/login-form/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/login-form/tsconfig.json b/examples/login-form/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/login-form/tsconfig.json +++ b/examples/login-form/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/markdown/.gitignore b/examples/markdown/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/markdown/.gitignore +++ b/examples/markdown/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/markdown/package.json b/examples/markdown/package.json index c7a34fe466..5dbfaca078 100644 --- a/examples/markdown/package.json +++ b/examples/markdown/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "build-parser": "yarn clean && parcel build src/parser.ts -d out --global md --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --experimental-scope-hoisting", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/bench": "latest", @@ -37,5 +31,8 @@ "transducers-hdom" ], "screenshot": "examples/markdown-parser.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/markdown/index.html b/examples/markdown/public/index.html similarity index 94% rename from examples/markdown/index.html rename to examples/markdown/public/index.html index 1618d8dd96..7b78718e75 100644 --- a/examples/markdown/index.html +++ b/examples/markdown/public/index.html @@ -43,6 +43,6 @@
- + diff --git a/examples/markdown/snowpack.config.js b/examples/markdown/snowpack.config.js new file mode 100644 index 0000000000..f0bfed1a52 --- /dev/null +++ b/examples/markdown/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/markdown", + }, +}; diff --git a/examples/markdown/README.txt b/examples/markdown/src/README.md similarity index 100% rename from examples/markdown/README.txt rename to examples/markdown/src/README.md diff --git a/examples/markdown/src/index.ts b/examples/markdown/src/index.ts index 1d534f463c..196e3cc40e 100644 --- a/examples/markdown/src/index.ts +++ b/examples/markdown/src/index.ts @@ -3,7 +3,7 @@ import { parse, TagFactories } from "@thi.ng/hiccup-markdown"; import { reactive, Stream } from "@thi.ng/rstream"; import { iterator, map } from "@thi.ng/transducers"; import { updateDOM } from "@thi.ng/transducers-hdom"; -import readme from "../README.txt"; +import readme from "./README.md"; // ignore error, resolved by parcel // const readme = "README.af35c500.md" @@ -50,7 +50,7 @@ const app = (input: Stream) => ({ "div.w-100.h-50.w-50-l.vh-100-l.overflow-y-scroll.pa3.lh-copy", [ "div.pa2.bg-yellow.purple.f7", - `Parsed ${src.length} chars in ${time}ms`, + `Parsed ${src.length} chars in ${time | 0}ms`, ], ...hiccup, ], @@ -79,8 +79,8 @@ fetch(readme) .then((txt) => src.next(txt)) .catch((e) => src.next(`# Error loading file: ${e}`)); -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => src.done()); -} +// // HMR handling +// if (process.env.NODE_ENV !== "production") { +// const hot = (module).hot; +// hot && hot.dispose(() => src.done()); +// } diff --git a/examples/markdown/src/static.d.ts b/examples/markdown/src/static.d.ts new file mode 100644 index 0000000000..6d2ddba995 --- /dev/null +++ b/examples/markdown/src/static.d.ts @@ -0,0 +1,64 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ + +declare module "*.md" { + const ref: string; + export default ref; +} diff --git a/examples/markdown/src/webpack.d.ts b/examples/markdown/src/webpack.d.ts deleted file mode 100644 index 5deedeaad4..0000000000 --- a/examples/markdown/src/webpack.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare module "*.txt"; -declare module "*.md"; diff --git a/examples/markdown/tsconfig.json b/examples/markdown/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/markdown/tsconfig.json +++ b/examples/markdown/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/multitouch/.gitignore b/examples/multitouch/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/multitouch/.gitignore +++ b/examples/multitouch/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/multitouch/package.json b/examples/multitouch/package.json index fecc0514c3..2ba3cfdfbe 100644 --- a/examples/multitouch/package.json +++ b/examples/multitouch/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom-canvas": "latest", @@ -37,5 +31,8 @@ "rstream-gestures", "transducers-hdom" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/multitouch/index.html b/examples/multitouch/public/index.html similarity index 92% rename from examples/multitouch/index.html rename to examples/multitouch/public/index.html index 0d4451f375..789d8de78e 100644 --- a/examples/multitouch/index.html +++ b/examples/multitouch/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/multitouch/snowpack.config.js b/examples/multitouch/snowpack.config.js new file mode 100644 index 0000000000..d2ccee4419 --- /dev/null +++ b/examples/multitouch/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/multitouch", + }, +}; diff --git a/examples/multitouch/src/static.d.ts b/examples/multitouch/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/multitouch/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/multitouch/src/webpack.d.ts b/examples/multitouch/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/multitouch/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/multitouch/tsconfig.json b/examples/multitouch/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/multitouch/tsconfig.json +++ b/examples/multitouch/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/multitouch/webpack.config.js b/examples/multitouch/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/multitouch/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/package-stats/package.json b/examples/package-stats/package.json index 41b7a532c3..c38f935fa1 100644 --- a/examples/package-stats/package.json +++ b/examples/package-stats/package.json @@ -7,13 +7,11 @@ "license": "Apache-2.0", "scripts": { "clean": "rm -rf *.js *.svg lib", - "build": "yarn clean && npx ts-node src/index.ts" + "build": "yarn clean && ../../node_modules/.bin/ts-node src/index.ts" }, "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2", - "ts-node": "^8.2.0" + "ts-node": "^9.1.0", + "typescript": "^4.1.2" }, "dependencies": { "@thi.ng/checks": "latest", @@ -33,6 +31,7 @@ "process": false }, "thi.ng": { + "skip": true, "online": false, "readme": [ "dgraph", diff --git a/examples/parse-playground/.gitignore b/examples/parse-playground/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/parse-playground/.gitignore +++ b/examples/parse-playground/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/parse-playground/package.json b/examples/parse-playground/package.json index aea1a73f68..f856b32fc2 100644 --- a/examples/parse-playground/package.json +++ b/examples/parse-playground/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -49,5 +43,8 @@ "transducers-binary" ], "screenshot": "examples/parse-playground.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/parse-playground/index.html b/examples/parse-playground/public/index.html similarity index 95% rename from examples/parse-playground/index.html rename to examples/parse-playground/public/index.html index 941ebce1ef..accace6af4 100644 --- a/examples/parse-playground/index.html +++ b/examples/parse-playground/public/index.html @@ -49,6 +49,6 @@ > - + diff --git a/examples/parse-playground/snowpack.config.js b/examples/parse-playground/snowpack.config.js new file mode 100644 index 0000000000..e9b0e20090 --- /dev/null +++ b/examples/parse-playground/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/parse-playground", + }, +}; diff --git a/examples/parse-playground/src/static.d.ts b/examples/parse-playground/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/parse-playground/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/parse-playground/src/webpack.d.ts b/examples/parse-playground/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/parse-playground/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/parse-playground/tsconfig.json b/examples/parse-playground/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/parse-playground/tsconfig.json +++ b/examples/parse-playground/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/parse-playground/webpack.config.js b/examples/parse-playground/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/parse-playground/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/pixel-basics/.gitignore b/examples/pixel-basics/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/pixel-basics/.gitignore +++ b/examples/pixel-basics/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/pixel-basics/package.json b/examples/pixel-basics/package.json index 5c1e663914..40ceb65914 100644 --- a/examples/pixel-basics/package.json +++ b/examples/pixel-basics/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/pixel": "latest", @@ -29,5 +23,8 @@ "thi.ng": { "readme": true, "screenshot": "pixel/pixel-basics.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/pixel-basics/index.html b/examples/pixel-basics/public/index.html similarity index 90% rename from examples/pixel-basics/index.html rename to examples/pixel-basics/public/index.html index 82a3690695..611377369e 100644 --- a/examples/pixel-basics/index.html +++ b/examples/pixel-basics/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/pixel-basics/snowpack.config.js b/examples/pixel-basics/snowpack.config.js new file mode 100644 index 0000000000..af66f4ffb7 --- /dev/null +++ b/examples/pixel-basics/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/pixel-basics", + }, +}; diff --git a/examples/pixel-basics/src/debug.png b/examples/pixel-basics/src/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..3407ed6fc1db084555acadb06043e7707b086425 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^EFjFn3?!rPH~WG(>5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1ad?Jd_r6q82Eal|aXnceB#A+Z&6tfX ZoPlK>!=s!pS@}R&22WQ%mvv4FO#nC`B76V< literal 0 HcmV?d00001 diff --git a/examples/pixel-basics/assets/haystack.jpg b/examples/pixel-basics/src/haystack.jpg similarity index 100% rename from examples/pixel-basics/assets/haystack.jpg rename to examples/pixel-basics/src/haystack.jpg diff --git a/examples/pixel-basics/src/index.ts b/examples/pixel-basics/src/index.ts index b6c7849cf4..57182d0452 100644 --- a/examples/pixel-basics/src/index.ts +++ b/examples/pixel-basics/src/index.ts @@ -7,8 +7,8 @@ import { RGB565, } from "@thi.ng/pixel"; import { SRC_OVER_I } from "@thi.ng/porter-duff"; -import IMG from "../assets/haystack.jpg"; -import LOGO from "../assets/logo-64.png"; +import IMG from "./haystack.jpg"; +import LOGO from "./logo-64.png"; Promise.all([IMG, LOGO].map(imagePromise)).then(([img, logo]) => { // init 16bit packed RGB pixel buffer from image (resized to 256x256) diff --git a/examples/pixel-basics/assets/logo-64.png b/examples/pixel-basics/src/logo-64.png similarity index 100% rename from examples/pixel-basics/assets/logo-64.png rename to examples/pixel-basics/src/logo-64.png diff --git a/examples/pixel-basics/src/static.d.ts b/examples/pixel-basics/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/pixel-basics/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/pixel-basics/src/webpack.d.ts b/examples/pixel-basics/src/webpack.d.ts deleted file mode 100644 index 891c762327..0000000000 --- a/examples/pixel-basics/src/webpack.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; diff --git a/examples/pixel-basics/tsconfig.json b/examples/pixel-basics/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/pixel-basics/tsconfig.json +++ b/examples/pixel-basics/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/pixel-basics/webpack.config.js b/examples/pixel-basics/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/pixel-basics/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/pointfree-svg/package.json b/examples/pointfree-svg/package.json index 9ec12f80e3..c90e563a45 100644 --- a/examples/pointfree-svg/package.json +++ b/examples/pointfree-svg/package.json @@ -6,8 +6,8 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "build": "yarn clean && ts-node src/index.ts", - "clean": "rm -rf *.js" + "clean": "rm -rf *.js", + "build": "yarn clean && ../../node_modules/.bin/ts-node src/index.ts" }, "dependencies": { "@thi.ng/hiccup": "latest", @@ -16,7 +16,7 @@ "@thi.ng/pointfree-lang": "latest" }, "devDependencies": { - "ts-node": "^8.2.0", + "ts-node": "^9.1.0", "typescript": "^4.1.2" }, "thi.ng": { diff --git a/examples/poisson-circles/.gitignore b/examples/poisson-circles/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/poisson-circles/.gitignore +++ b/examples/poisson-circles/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/poisson-circles/package.json b/examples/poisson-circles/package.json index 4677132c92..dbca07105f 100644 --- a/examples/poisson-circles/package.json +++ b/examples/poisson-circles/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/geom": "latest", @@ -35,5 +29,8 @@ "poisson" ], "screenshot": "poisson/poisson.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/poisson-circles/index.html b/examples/poisson-circles/public/index.html similarity index 92% rename from examples/poisson-circles/index.html rename to examples/poisson-circles/public/index.html index e30a5fb1c1..18759c43bd 100644 --- a/examples/poisson-circles/index.html +++ b/examples/poisson-circles/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/poisson-circles/snowpack.config.js b/examples/poisson-circles/snowpack.config.js new file mode 100644 index 0000000000..e10517418f --- /dev/null +++ b/examples/poisson-circles/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/poisson-circles", + }, +}; diff --git a/examples/poisson-circles/src/static.d.ts b/examples/poisson-circles/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/poisson-circles/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/poisson-circles/src/webpack.d.ts b/examples/poisson-circles/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/poisson-circles/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/poisson-circles/tsconfig.json b/examples/poisson-circles/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/poisson-circles/tsconfig.json +++ b/examples/poisson-circles/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/poisson-circles/webpack.config.js b/examples/poisson-circles/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/poisson-circles/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/poly-spline/.gitignore b/examples/poly-spline/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/poly-spline/.gitignore +++ b/examples/poly-spline/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/poly-spline/package.json b/examples/poly-spline/package.json index e5f3efde11..3d057db840 100644 --- a/examples/poly-spline/package.json +++ b/examples/poly-spline/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/dsp": "latest", @@ -39,5 +33,8 @@ "transducers-hdom" ], "screenshot": "examples/poly-spline.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/poly-spline/index.html b/examples/poly-spline/public/index.html similarity index 90% rename from examples/poly-spline/index.html rename to examples/poly-spline/public/index.html index ac23bd744d..7c09ea595c 100644 --- a/examples/poly-spline/index.html +++ b/examples/poly-spline/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/poly-spline/snowpack.config.js b/examples/poly-spline/snowpack.config.js new file mode 100644 index 0000000000..6b77db262b --- /dev/null +++ b/examples/poly-spline/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/poly-spline", + }, +}; diff --git a/examples/poly-spline/src/index.ts b/examples/poly-spline/src/index.ts index 713e442ed8..761a58e73e 100644 --- a/examples/poly-spline/src/index.ts +++ b/examples/poly-spline/src/index.ts @@ -197,8 +197,8 @@ const main = sync({ // transform to create & apply UI main.transform(map(app(mode, uniform, scale, uniScale)), updateDOM()); -// HMR handling (dev builds only) -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} +// // HMR handling (dev builds only) +// if (process.env.NODE_ENV !== "production") { +// const hot = (module).hot; +// hot && hot.dispose(() => main.done()); +// } diff --git a/examples/poly-spline/src/static.d.ts b/examples/poly-spline/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/poly-spline/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/poly-spline/tsconfig.json b/examples/poly-spline/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/poly-spline/tsconfig.json +++ b/examples/poly-spline/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/poly-spline/webpack.config.js b/examples/poly-spline/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/poly-spline/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/porter-duff/.gitignore b/examples/porter-duff/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/porter-duff/.gitignore +++ b/examples/porter-duff/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/porter-duff/package.json b/examples/porter-duff/package.json index 84fbf67683..032a092efe 100644 --- a/examples/porter-duff/package.json +++ b/examples/porter-duff/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/pixel": "latest", @@ -29,5 +23,8 @@ "thi.ng": { "readme": true, "screenshot": "porter-duff/porter-duff2.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/porter-duff/index.html b/examples/porter-duff/public/index.html similarity index 93% rename from examples/porter-duff/index.html rename to examples/porter-duff/public/index.html index 6d1a637779..51fc88e843 100644 --- a/examples/porter-duff/index.html +++ b/examples/porter-duff/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/porter-duff/snowpack.config.js b/examples/porter-duff/snowpack.config.js new file mode 100644 index 0000000000..d1de7753b8 --- /dev/null +++ b/examples/porter-duff/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/porter-duff", + }, +}; diff --git a/examples/porter-duff/src/index.ts b/examples/porter-duff/src/index.ts index d21c60f6b6..65ea28d830 100644 --- a/examples/porter-duff/src/index.ts +++ b/examples/porter-duff/src/index.ts @@ -13,8 +13,8 @@ import { SRC_OVER_I, XOR_I, } from "@thi.ng/porter-duff"; -import IMG2 from "../assets/plus.png"; -import IMG from "../assets/ring.png"; +import IMG2 from "./plus.png"; +import IMG from "./ring.png"; const MODES: any = { SRC: SRC_I, @@ -70,8 +70,3 @@ Promise.all([IMG, IMG2].map(imagePromise)) } }) .catch((e) => console.log(e)); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => {}); -} diff --git a/examples/porter-duff/assets/plus.png b/examples/porter-duff/src/plus.png similarity index 100% rename from examples/porter-duff/assets/plus.png rename to examples/porter-duff/src/plus.png diff --git a/examples/porter-duff/assets/ring.png b/examples/porter-duff/src/ring.png similarity index 100% rename from examples/porter-duff/assets/ring.png rename to examples/porter-duff/src/ring.png diff --git a/examples/porter-duff/src/static.d.ts b/examples/porter-duff/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/porter-duff/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/porter-duff/src/webpack.d.ts b/examples/porter-duff/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/porter-duff/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/porter-duff/tsconfig.json b/examples/porter-duff/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/porter-duff/tsconfig.json +++ b/examples/porter-duff/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/porter-duff/webpack.config.js b/examples/porter-duff/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/porter-duff/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/ramp-synth/.gitignore b/examples/ramp-synth/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/ramp-synth/.gitignore +++ b/examples/ramp-synth/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/ramp-synth/package.json b/examples/ramp-synth/package.json index cec614872a..688d0db6fc 100644 --- a/examples/ramp-synth/package.json +++ b/examples/ramp-synth/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/arrays": "latest", @@ -40,5 +34,8 @@ "transducers" ], "screenshot": "examples/ramp-synth.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/ramp-synth/index.html b/examples/ramp-synth/public/index.html similarity index 93% rename from examples/ramp-synth/index.html rename to examples/ramp-synth/public/index.html index 118f2de0d5..3dbbbad136 100644 --- a/examples/ramp-synth/index.html +++ b/examples/ramp-synth/public/index.html @@ -28,6 +28,6 @@ > for info & keyboard shortcuts. - + diff --git a/examples/ramp-synth/snowpack.config.js b/examples/ramp-synth/snowpack.config.js new file mode 100644 index 0000000000..f8635a7cc6 --- /dev/null +++ b/examples/ramp-synth/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/ramp-synth", + }, +}; diff --git a/examples/ramp-synth/src/static.d.ts b/examples/ramp-synth/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/ramp-synth/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/ramp-synth/tsconfig.json b/examples/ramp-synth/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/ramp-synth/tsconfig.json +++ b/examples/ramp-synth/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/ramp-synth/webpack.config.js b/examples/ramp-synth/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/ramp-synth/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rdom-basics/.gitignore b/examples/rdom-basics/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/rdom-basics/.gitignore +++ b/examples/rdom-basics/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rdom-basics/package.json b/examples/rdom-basics/package.json index f01ff9d34f..c75f2fd11c 100644 --- a/examples/rdom-basics/package.json +++ b/examples/rdom-basics/package.json @@ -6,16 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache", - "start2": "parcel --version" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -37,5 +30,8 @@ "rstream", "transducers" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rdom-basics/index.html b/examples/rdom-basics/public/index.html similarity index 93% rename from examples/rdom-basics/index.html rename to examples/rdom-basics/public/index.html index 8300301dfb..cef058d0e4 100644 --- a/examples/rdom-basics/index.html +++ b/examples/rdom-basics/public/index.html @@ -30,6 +30,6 @@ >Source code - + diff --git a/examples/rdom-basics/snowpack.config.js b/examples/rdom-basics/snowpack.config.js new file mode 100644 index 0000000000..17aea3096c --- /dev/null +++ b/examples/rdom-basics/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rdom-basics", + }, +}; diff --git a/examples/rdom-basics/src/static.d.ts b/examples/rdom-basics/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rdom-basics/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rdom-basics/src/webpack.d.ts b/examples/rdom-basics/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/rdom-basics/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/rdom-basics/tsconfig.json b/examples/rdom-basics/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/rdom-basics/tsconfig.json +++ b/examples/rdom-basics/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rdom-basics/webpack.config.js b/examples/rdom-basics/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rdom-basics/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rdom-dnd/.gitignore b/examples/rdom-dnd/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/rdom-dnd/.gitignore +++ b/examples/rdom-dnd/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rdom-dnd/package.json b/examples/rdom-dnd/package.json index f5ca624efd..c5f8c5f9e2 100644 --- a/examples/rdom-dnd/package.json +++ b/examples/rdom-dnd/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -35,5 +29,8 @@ "hiccup-carbon-icons" ], "screenshot": "examples/rdom-dnd.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rdom-dnd/index.html b/examples/rdom-dnd/public/index.html similarity index 94% rename from examples/rdom-dnd/index.html rename to examples/rdom-dnd/public/index.html index 6a8f3a66aa..217e1e91e7 100644 --- a/examples/rdom-dnd/index.html +++ b/examples/rdom-dnd/public/index.html @@ -35,6 +35,6 @@ >Source code - + diff --git a/examples/rdom-dnd/snowpack.config.js b/examples/rdom-dnd/snowpack.config.js new file mode 100644 index 0000000000..0deb860804 --- /dev/null +++ b/examples/rdom-dnd/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rdom-dnd", + }, +}; diff --git a/examples/rdom-dnd/src/static.d.ts b/examples/rdom-dnd/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rdom-dnd/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rdom-dnd/src/webpack.d.ts b/examples/rdom-dnd/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/rdom-dnd/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/rdom-dnd/tsconfig.json b/examples/rdom-dnd/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/rdom-dnd/tsconfig.json +++ b/examples/rdom-dnd/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rdom-dnd/webpack.config.js b/examples/rdom-dnd/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rdom-dnd/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rdom-lissajous/.gitignore b/examples/rdom-lissajous/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/rdom-lissajous/.gitignore +++ b/examples/rdom-lissajous/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rdom-lissajous/package.json b/examples/rdom-lissajous/package.json index c74b435dc3..24e826c470 100644 --- a/examples/rdom-lissajous/package.json +++ b/examples/rdom-lissajous/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -39,5 +33,8 @@ "transducers" ], "screenshot": "examples/rdom-lissajous.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rdom-lissajous/index.html b/examples/rdom-lissajous/public/index.html similarity index 95% rename from examples/rdom-lissajous/index.html rename to examples/rdom-lissajous/public/index.html index 48154ac7c2..853885f436 100644 --- a/examples/rdom-lissajous/index.html +++ b/examples/rdom-lissajous/public/index.html @@ -49,6 +49,6 @@ >Source code - + diff --git a/examples/rdom-lissajous/snowpack.config.js b/examples/rdom-lissajous/snowpack.config.js new file mode 100644 index 0000000000..f5ac4e1750 --- /dev/null +++ b/examples/rdom-lissajous/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rdom-lissajous", + }, +}; diff --git a/examples/rdom-lissajous/src/static.d.ts b/examples/rdom-lissajous/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rdom-lissajous/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rdom-lissajous/src/webpack.d.ts b/examples/rdom-lissajous/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/rdom-lissajous/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/rdom-lissajous/tsconfig.json b/examples/rdom-lissajous/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/rdom-lissajous/tsconfig.json +++ b/examples/rdom-lissajous/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rdom-lissajous/webpack.config.js b/examples/rdom-lissajous/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rdom-lissajous/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rdom-search-docs/.gitignore b/examples/rdom-search-docs/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/rdom-search-docs/.gitignore +++ b/examples/rdom-search-docs/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rdom-search-docs/package.json b/examples/rdom-search-docs/package.json index c314a19fad..1ea1c5cd7c 100644 --- a/examples/rdom-search-docs/package.json +++ b/examples/rdom-search-docs/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -41,5 +35,8 @@ "rstream", "transducers" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rdom-search-docs/index.html b/examples/rdom-search-docs/public/index.html similarity index 91% rename from examples/rdom-search-docs/index.html rename to examples/rdom-search-docs/public/index.html index f84b1eea93..d0e618fcd1 100644 --- a/examples/rdom-search-docs/index.html +++ b/examples/rdom-search-docs/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/rdom-search-docs/snowpack.config.js b/examples/rdom-search-docs/snowpack.config.js new file mode 100644 index 0000000000..d7e30c3e03 --- /dev/null +++ b/examples/rdom-search-docs/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rdom-search-docs", + }, +}; diff --git a/examples/rdom-search-docs/src/static.d.ts b/examples/rdom-search-docs/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rdom-search-docs/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rdom-search-docs/src/webpack.d.ts b/examples/rdom-search-docs/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/rdom-search-docs/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/rdom-search-docs/tsconfig.json b/examples/rdom-search-docs/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/rdom-search-docs/tsconfig.json +++ b/examples/rdom-search-docs/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rdom-search-docs/webpack.config.js b/examples/rdom-search-docs/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rdom-search-docs/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rdom-svg-nodes/.gitignore b/examples/rdom-svg-nodes/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/rdom-svg-nodes/.gitignore +++ b/examples/rdom-svg-nodes/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rdom-svg-nodes/package.json b/examples/rdom-svg-nodes/package.json index 3468d2eb6f..d38f534bec 100644 --- a/examples/rdom-svg-nodes/package.json +++ b/examples/rdom-svg-nodes/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/atom": "latest", @@ -38,5 +32,8 @@ "rstream" ], "screenshot": "examples/rdom-svg-nodes.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rdom-svg-nodes/index.html b/examples/rdom-svg-nodes/public/index.html similarity index 92% rename from examples/rdom-svg-nodes/index.html rename to examples/rdom-svg-nodes/public/index.html index c28cf56173..f8bf642aab 100644 --- a/examples/rdom-svg-nodes/index.html +++ b/examples/rdom-svg-nodes/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/rdom-svg-nodes/snowpack.config.js b/examples/rdom-svg-nodes/snowpack.config.js new file mode 100644 index 0000000000..0b79d25904 --- /dev/null +++ b/examples/rdom-svg-nodes/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rdom-svg-nodes", + }, +}; diff --git a/examples/rdom-svg-nodes/src/static.d.ts b/examples/rdom-svg-nodes/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rdom-svg-nodes/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rdom-svg-nodes/src/webpack.d.ts b/examples/rdom-svg-nodes/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/rdom-svg-nodes/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/rdom-svg-nodes/tsconfig.json b/examples/rdom-svg-nodes/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/rdom-svg-nodes/tsconfig.json +++ b/examples/rdom-svg-nodes/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rdom-svg-nodes/webpack.config.js b/examples/rdom-svg-nodes/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rdom-svg-nodes/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rotating-voronoi/.gitignore b/examples/rotating-voronoi/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/rotating-voronoi/.gitignore +++ b/examples/rotating-voronoi/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rotating-voronoi/dist/index.html b/examples/rotating-voronoi/dist/index.html deleted file mode 100644 index ee569af231..0000000000 --- a/examples/rotating-voronoi/dist/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - rotating-voronoi - - - - -
- - - diff --git a/examples/rotating-voronoi/package.json b/examples/rotating-voronoi/package.json index 9c047d42e0..f38e222e45 100644 --- a/examples/rotating-voronoi/package.json +++ b/examples/rotating-voronoi/package.json @@ -14,15 +14,9 @@ "rstream" ], "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/dl-asset": "latest", @@ -58,5 +52,8 @@ "vectors" ], "screenshot": "examples/rotating-voronoi.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rotating-voronoi/index.html b/examples/rotating-voronoi/public/index.html similarity index 90% rename from examples/rotating-voronoi/index.html rename to examples/rotating-voronoi/public/index.html index aeb50daf9d..ab521e3664 100644 --- a/examples/rotating-voronoi/index.html +++ b/examples/rotating-voronoi/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/rotating-voronoi/snowpack.config.js b/examples/rotating-voronoi/snowpack.config.js new file mode 100644 index 0000000000..b7007c300f --- /dev/null +++ b/examples/rotating-voronoi/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rotating-voronoi", + }, +}; diff --git a/examples/rotating-voronoi/src/index.ts b/examples/rotating-voronoi/src/index.ts index 7326bbd897..f86ea8185a 100644 --- a/examples/rotating-voronoi/src/index.ts +++ b/examples/rotating-voronoi/src/index.ts @@ -173,7 +173,7 @@ function appRender(state: AppState) { ]; } -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => mainStream.done()); -} +// if (process.env.NODE_ENV !== "production") { +// const hot = (module).hot; +// hot && hot.dispose(() => mainStream.done()); +// } diff --git a/examples/rotating-voronoi/src/static.d.ts b/examples/rotating-voronoi/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rotating-voronoi/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rotating-voronoi/tsconfig.json b/examples/rotating-voronoi/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/rotating-voronoi/tsconfig.json +++ b/examples/rotating-voronoi/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rotating-voronoi/webpack.config.js b/examples/rotating-voronoi/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rotating-voronoi/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/router-basics/.gitignore b/examples/router-basics/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/router-basics/.gitignore +++ b/examples/router-basics/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/router-basics/package.json b/examples/router-basics/package.json index 2bd8238c7c..719441ecc9 100644 --- a/examples/router-basics/package.json +++ b/examples/router-basics/package.json @@ -6,11 +6,9 @@ "author": "Karsten Schmidt", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "prep": "yarn clean && mkdir -p out && cp -R assets out", - "build": "yarn prep && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "yarn prep && parcel index.html -p 8080 --open -d out" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -20,11 +18,6 @@ "@thi.ng/interceptors": "latest", "@thi.ng/router": "latest" }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" - }, "browserslist": [ "last 3 Chrome versions" ], @@ -39,5 +32,8 @@ "router" ], "screenshot": "examples/router-basics.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/router-basics/assets/manomine-1.jpg b/examples/router-basics/public/assets/manomine-1.jpg similarity index 100% rename from examples/router-basics/assets/manomine-1.jpg rename to examples/router-basics/public/assets/manomine-1.jpg diff --git a/examples/router-basics/assets/manomine-2.jpg b/examples/router-basics/public/assets/manomine-2.jpg similarity index 100% rename from examples/router-basics/assets/manomine-2.jpg rename to examples/router-basics/public/assets/manomine-2.jpg diff --git a/examples/router-basics/assets/manomine-3.jpg b/examples/router-basics/public/assets/manomine-3.jpg similarity index 100% rename from examples/router-basics/assets/manomine-3.jpg rename to examples/router-basics/public/assets/manomine-3.jpg diff --git a/examples/router-basics/assets/user-1.json b/examples/router-basics/public/assets/user-1.json similarity index 100% rename from examples/router-basics/assets/user-1.json rename to examples/router-basics/public/assets/user-1.json diff --git a/examples/router-basics/assets/user-2.json b/examples/router-basics/public/assets/user-2.json similarity index 100% rename from examples/router-basics/assets/user-2.json rename to examples/router-basics/public/assets/user-2.json diff --git a/examples/router-basics/assets/users.json b/examples/router-basics/public/assets/users.json similarity index 100% rename from examples/router-basics/assets/users.json rename to examples/router-basics/public/assets/users.json diff --git a/examples/router-basics/index.html b/examples/router-basics/public/index.html similarity index 96% rename from examples/router-basics/index.html rename to examples/router-basics/public/index.html index 308b56e978..77598db5c1 100644 --- a/examples/router-basics/index.html +++ b/examples/router-basics/public/index.html @@ -69,6 +69,6 @@ >@manomine - + diff --git a/examples/router-basics/snowpack.config.js b/examples/router-basics/snowpack.config.js new file mode 100644 index 0000000000..5e2818643d --- /dev/null +++ b/examples/router-basics/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/router-basics", + }, +}; diff --git a/examples/router-basics/src/api.ts b/examples/router-basics/src/api.ts index 642e93cd4e..6f4546cb09 100644 --- a/examples/router-basics/src/api.ts +++ b/examples/router-basics/src/api.ts @@ -1,6 +1,6 @@ import type { Fn, IObjectOf, Path } from "@thi.ng/api"; import type { IView } from "@thi.ng/atom"; -import { EffectDef, EventBus, EventDef } from "@thi.ng/interceptors"; +import type { EffectDef, EventBus, EventDef } from "@thi.ng/interceptors"; import type { HTMLRouterConfig, RouteMatch } from "@thi.ng/router"; // general types defined for the base app diff --git a/examples/router-basics/src/static.d.ts b/examples/router-basics/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/router-basics/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/router-basics/tsconfig.json b/examples/router-basics/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/router-basics/tsconfig.json +++ b/examples/router-basics/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/router-basics/webpack.config.js b/examples/router-basics/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/router-basics/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rstream-dataflow/.gitignore b/examples/rstream-dataflow/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/rstream-dataflow/.gitignore +++ b/examples/rstream-dataflow/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rstream-dataflow/package.json b/examples/rstream-dataflow/package.json index 7502d49fe0..7664aa59b3 100644 --- a/examples/rstream-dataflow/package.json +++ b/examples/rstream-dataflow/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/atom": "latest", @@ -39,5 +33,8 @@ "hdom", "rstream-graph" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rstream-dataflow/index.html b/examples/rstream-dataflow/public/index.html similarity index 94% rename from examples/rstream-dataflow/index.html rename to examples/rstream-dataflow/public/index.html index 1313cef941..647140df05 100644 --- a/examples/rstream-dataflow/index.html +++ b/examples/rstream-dataflow/public/index.html @@ -40,6 +40,6 @@ >Source - + diff --git a/examples/rstream-dataflow/snowpack.config.js b/examples/rstream-dataflow/snowpack.config.js new file mode 100644 index 0000000000..ff49999aad --- /dev/null +++ b/examples/rstream-dataflow/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rstream-dataflow", + }, +}; diff --git a/examples/rstream-dataflow/src/index.ts b/examples/rstream-dataflow/src/index.ts index 638f221264..cf9fb70d66 100644 --- a/examples/rstream-dataflow/src/index.ts +++ b/examples/rstream-dataflow/src/index.ts @@ -94,11 +94,13 @@ const graph = initGraph(db, { // with multiple inputs circle: { fn: node( - map(({ click, radius, color }) => - click && radius && color + map((ins) => { + console.log(ins); + const { click, radius, color } = ins; + return click && radius && color ? circle(color, click[0], click[1], radius * 2) - : undefined - ) + : undefined; + }) ), ins: { click: { stream: "/clickpos/node" }, diff --git a/examples/rstream-dataflow/src/static.d.ts b/examples/rstream-dataflow/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rstream-dataflow/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rstream-dataflow/tsconfig.json b/examples/rstream-dataflow/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/rstream-dataflow/tsconfig.json +++ b/examples/rstream-dataflow/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rstream-dataflow/webpack.config.js b/examples/rstream-dataflow/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rstream-dataflow/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rstream-event-loop/.gitignore b/examples/rstream-event-loop/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/rstream-event-loop/.gitignore +++ b/examples/rstream-event-loop/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rstream-event-loop/package.json b/examples/rstream-event-loop/package.json index 17e24a3f50..6ed0bfc216 100644 --- a/examples/rstream-event-loop/package.json +++ b/examples/rstream-event-loop/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -39,5 +33,8 @@ "transducers-hdom" ], "screenshot": "examples/rstream-event-loop.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rstream-event-loop/index.html b/examples/rstream-event-loop/public/index.html similarity index 93% rename from examples/rstream-event-loop/index.html rename to examples/rstream-event-loop/public/index.html index f8b123caa3..fa44102111 100644 --- a/examples/rstream-event-loop/index.html +++ b/examples/rstream-event-loop/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/rstream-event-loop/snowpack.config.js b/examples/rstream-event-loop/snowpack.config.js new file mode 100644 index 0000000000..8bb6b25589 --- /dev/null +++ b/examples/rstream-event-loop/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rstream-event-loop", + }, +}; diff --git a/examples/rstream-event-loop/src/static.d.ts b/examples/rstream-event-loop/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rstream-event-loop/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rstream-event-loop/tsconfig.json b/examples/rstream-event-loop/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/rstream-event-loop/tsconfig.json +++ b/examples/rstream-event-loop/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rstream-event-loop/webpack.config.js b/examples/rstream-event-loop/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rstream-event-loop/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rstream-grid/.gitignore b/examples/rstream-grid/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/rstream-grid/.gitignore +++ b/examples/rstream-grid/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rstream-grid/notes.md b/examples/rstream-grid/notes.md new file mode 100644 index 0000000000..77cbcf04f1 --- /dev/null +++ b/examples/rstream-grid/notes.md @@ -0,0 +1,15 @@ +# Rewire dataflow + +```ts +export const useScale = (graph: IObjectOf>, bus: EventBus) => { + const node = rsg.addNode(graph, bus.state, "scale", { + fn: scale, + ins: { + shapes: { stream: "grid" }, + scale: { path: "params.scale" }, + } + }); + (>graph.svg).removeID("shapes"); + (>graph.svg).add(node.subscribe(null, "shapes")); +}; +``` \ No newline at end of file diff --git a/examples/rstream-grid/package.json b/examples/rstream-grid/package.json index da9dbb0a2c..fd954bf98b 100644 --- a/examples/rstream-grid/package.json +++ b/examples/rstream-grid/package.json @@ -6,10 +6,9 @@ "author": "Karsten Schmidt", "license": "MIT", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -25,12 +24,6 @@ "@thi.ng/rstream-graph": "latest", "@thi.ng/transducers": "latest" }, - "devDependencies": { - "@types/node": "^13.7.4", - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" - }, "browserslist": [ "last 3 Chrome versions" ], @@ -50,5 +43,8 @@ "transducers" ], "screenshot": "examples/rstream-grid.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rstream-grid/index.html b/examples/rstream-grid/public/index.html similarity index 98% rename from examples/rstream-grid/index.html rename to examples/rstream-grid/public/index.html index a947814e7a..4b598659fe 100644 --- a/examples/rstream-grid/index.html +++ b/examples/rstream-grid/public/index.html @@ -127,6 +127,6 @@
- + diff --git a/examples/rstream-grid/snowpack.config.js b/examples/rstream-grid/snowpack.config.js new file mode 100644 index 0000000000..2e2f280f99 --- /dev/null +++ b/examples/rstream-grid/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rstream-grid", + }, +}; diff --git a/examples/rstream-grid/src/api.ts b/examples/rstream-grid/src/api.ts index ff3fe683e9..f5e3561990 100644 --- a/examples/rstream-grid/src/api.ts +++ b/examples/rstream-grid/src/api.ts @@ -1,6 +1,6 @@ import type { Fn, IObjectOf, Path } from "@thi.ng/api"; import type { IView } from "@thi.ng/atom"; -import { EffectDef, EventBus, EventDef } from "@thi.ng/interceptors"; +import type { EffectDef, EventBus, EventDef } from "@thi.ng/interceptors"; /** * Function signature for main app components. diff --git a/examples/rstream-grid/src/dataflow.ts b/examples/rstream-grid/src/dataflow.ts index 17a6ac090d..c357e30747 100644 --- a/examples/rstream-grid/src/dataflow.ts +++ b/examples/rstream-grid/src/dataflow.ts @@ -1,5 +1,5 @@ import { group, rect, svg } from "@thi.ng/hiccup-svg"; -import { EventBus } from "@thi.ng/interceptors"; +import type { EventBus } from "@thi.ng/interceptors"; import { initGraph, node } from "@thi.ng/rstream-graph"; import { map, range2d } from "@thi.ng/transducers"; import * as ev from "./events"; diff --git a/examples/rstream-grid/src/index.ts b/examples/rstream-grid/src/index.ts index edc3088d0b..700546a668 100644 --- a/examples/rstream-grid/src/index.ts +++ b/examples/rstream-grid/src/index.ts @@ -1,10 +1,8 @@ +import { exposeGlobal } from "@thi.ng/api"; import { App } from "./app"; import { CONFIG } from "./config"; -// export app to global var in dev mode -// (for interaction via browser dev tools) -if (process.env.NODE_ENV === "development") { - ((window)["APP"] = new App(CONFIG)).start(); -} else { - new App(CONFIG).start(); -} +const APP = new App(CONFIG); +exposeGlobal("APP", APP); + +APP.start(); diff --git a/examples/rstream-grid/src/static.d.ts b/examples/rstream-grid/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rstream-grid/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rstream-grid/tsconfig.json b/examples/rstream-grid/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/rstream-grid/tsconfig.json +++ b/examples/rstream-grid/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rstream-grid/webpack.config.js b/examples/rstream-grid/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rstream-grid/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/rstream-hdom/.gitignore b/examples/rstream-hdom/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/rstream-hdom/.gitignore +++ b/examples/rstream-hdom/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rstream-hdom/package.json b/examples/rstream-hdom/package.json index b55309b28e..80a24e5e86 100644 --- a/examples/rstream-hdom/package.json +++ b/examples/rstream-hdom/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/arrays": "latest", @@ -26,5 +21,8 @@ ], "browser": { "process": false + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rstream-hdom/index.html b/examples/rstream-hdom/public/index.html similarity index 91% rename from examples/rstream-hdom/index.html rename to examples/rstream-hdom/public/index.html index bdc1d79c48..79b09a0c01 100644 --- a/examples/rstream-hdom/index.html +++ b/examples/rstream-hdom/public/index.html @@ -21,6 +21,6 @@
- + diff --git a/examples/rstream-hdom/snowpack.config.js b/examples/rstream-hdom/snowpack.config.js new file mode 100644 index 0000000000..e85d7fa7be --- /dev/null +++ b/examples/rstream-hdom/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rstream-hdom", + }, +}; diff --git a/examples/rstream-hdom/src/static.d.ts b/examples/rstream-hdom/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rstream-hdom/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rstream-hdom/tsconfig.json b/examples/rstream-hdom/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/rstream-hdom/tsconfig.json +++ b/examples/rstream-hdom/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rstream-spreadsheet/.gitignore b/examples/rstream-spreadsheet/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/rstream-spreadsheet/.gitignore +++ b/examples/rstream-spreadsheet/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/rstream-spreadsheet/package.json b/examples/rstream-spreadsheet/package.json index c430dddcdf..da8f566c64 100644 --- a/examples/rstream-spreadsheet/package.json +++ b/examples/rstream-spreadsheet/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -52,5 +46,8 @@ "transducers-hdom" ], "screenshot": "examples/rstream-spreadsheet.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/rstream-spreadsheet/index.html b/examples/rstream-spreadsheet/public/index.html similarity index 97% rename from examples/rstream-spreadsheet/index.html rename to examples/rstream-spreadsheet/public/index.html index 1e8ae7ccb1..8170476e96 100644 --- a/examples/rstream-spreadsheet/index.html +++ b/examples/rstream-spreadsheet/public/index.html @@ -62,6 +62,6 @@

S-expression formula syntax

cell value A1 from interval A2-A3 to A4-A5 - + diff --git a/examples/rstream-spreadsheet/snowpack.config.js b/examples/rstream-spreadsheet/snowpack.config.js new file mode 100644 index 0000000000..bfdbe21727 --- /dev/null +++ b/examples/rstream-spreadsheet/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/rstream-spreadsheet", + }, +}; diff --git a/examples/rstream-spreadsheet/src/index.ts b/examples/rstream-spreadsheet/src/index.ts index 028bce6ae8..a27ef6d118 100644 --- a/examples/rstream-spreadsheet/src/index.ts +++ b/examples/rstream-spreadsheet/src/index.ts @@ -1,3 +1,4 @@ +import { exposeGlobal } from "@thi.ng/api"; import { isNumber } from "@thi.ng/checks"; import { fromAtom } from "@thi.ng/rstream"; import { charRange } from "@thi.ng/strings"; @@ -143,10 +144,5 @@ const main = fromAtom(DB); // in hdom main.transform(map(app()), updateDOM({ span: false })); -(window)["DB"] = DB; -(window)["graph"] = graph; - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} +exposeGlobal("DB", DB); +exposeGlobal("graph", graph); diff --git a/examples/rstream-spreadsheet/src/static.d.ts b/examples/rstream-spreadsheet/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/rstream-spreadsheet/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/rstream-spreadsheet/src/webpack.d.ts b/examples/rstream-spreadsheet/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/rstream-spreadsheet/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/rstream-spreadsheet/tsconfig.json b/examples/rstream-spreadsheet/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/rstream-spreadsheet/tsconfig.json +++ b/examples/rstream-spreadsheet/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/rstream-spreadsheet/webpack.config.js b/examples/rstream-spreadsheet/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/rstream-spreadsheet/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/scenegraph-image/.gitignore b/examples/scenegraph-image/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/scenegraph-image/.gitignore +++ b/examples/scenegraph-image/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/scenegraph-image/package.json b/examples/scenegraph-image/package.json index da7f5a11dc..4f2e5ef122 100644 --- a/examples/scenegraph-image/package.json +++ b/examples/scenegraph-image/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -45,5 +39,8 @@ "vectors" ], "screenshot": "examples/scenegraph-image.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/scenegraph-image/index.html b/examples/scenegraph-image/public/index.html similarity index 91% rename from examples/scenegraph-image/index.html rename to examples/scenegraph-image/public/index.html index 38e34c8e15..e09938c229 100644 --- a/examples/scenegraph-image/index.html +++ b/examples/scenegraph-image/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/scenegraph-image/snowpack.config.js b/examples/scenegraph-image/snowpack.config.js new file mode 100644 index 0000000000..8be49694bd --- /dev/null +++ b/examples/scenegraph-image/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/scenegraph-image", + }, +}; diff --git a/examples/scenegraph-image/src/index.ts b/examples/scenegraph-image/src/index.ts index f7cf1e888a..f17d3477a8 100644 --- a/examples/scenegraph-image/src/index.ts +++ b/examples/scenegraph-image/src/index.ts @@ -8,7 +8,7 @@ import { GRAY8, imagePromise, PackedBuffer } from "@thi.ng/pixel"; import { Node2D } from "@thi.ng/scenegraph"; import { map, range } from "@thi.ng/transducers"; import { ReadonlyVec, setN2, Vec } from "@thi.ng/vectors"; -import LOGO from "../assets/logo-256.png"; +import LOGO from "./logo-256.png"; /** * Specialized scene graph node for images. @@ -135,10 +135,5 @@ imagePromise(LOGO).then((img) => { ]; }; - cancel = start(app); + start(app); }); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && cancel! && hot.dispose(cancel!); -} diff --git a/examples/scenegraph-image/assets/logo-256.png b/examples/scenegraph-image/src/logo-256.png similarity index 100% rename from examples/scenegraph-image/assets/logo-256.png rename to examples/scenegraph-image/src/logo-256.png diff --git a/examples/scenegraph-image/src/static.d.ts b/examples/scenegraph-image/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/scenegraph-image/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/scenegraph-image/src/webpack.d.ts b/examples/scenegraph-image/src/webpack.d.ts deleted file mode 100644 index 65e20c0a38..0000000000 --- a/examples/scenegraph-image/src/webpack.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare module "*.png"; -declare module "*.jpg"; diff --git a/examples/scenegraph-image/tsconfig.json b/examples/scenegraph-image/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/scenegraph-image/tsconfig.json +++ b/examples/scenegraph-image/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/scenegraph-image/webpack.config.js b/examples/scenegraph-image/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/scenegraph-image/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/scenegraph/.gitignore b/examples/scenegraph/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/scenegraph/.gitignore +++ b/examples/scenegraph/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/scenegraph/package.json b/examples/scenegraph/package.json index 9438ea4ab5..53c4ab3174 100644 --- a/examples/scenegraph/package.json +++ b/examples/scenegraph/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/geom": "latest", @@ -43,5 +37,8 @@ "vectors" ], "screenshot": "examples/scenegraph.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/scenegraph/index.html b/examples/scenegraph/public/index.html similarity index 90% rename from examples/scenegraph/index.html rename to examples/scenegraph/public/index.html index cc77999cfb..23b5bfe711 100644 --- a/examples/scenegraph/index.html +++ b/examples/scenegraph/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/scenegraph/snowpack.config.js b/examples/scenegraph/snowpack.config.js new file mode 100644 index 0000000000..3974526e07 --- /dev/null +++ b/examples/scenegraph/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/scenegraph", + }, +}; diff --git a/examples/scenegraph/src/index.ts b/examples/scenegraph/src/index.ts index 5aff3839db..5e64a62e5f 100644 --- a/examples/scenegraph/src/index.ts +++ b/examples/scenegraph/src/index.ts @@ -157,9 +157,4 @@ const app = () => { ]; }; -const cancel = start(app); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(cancel); -} +start(app); diff --git a/examples/scenegraph/src/static.d.ts b/examples/scenegraph/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/scenegraph/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/scenegraph/tsconfig.json b/examples/scenegraph/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/scenegraph/tsconfig.json +++ b/examples/scenegraph/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/scenegraph/webpack.config.js b/examples/scenegraph/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/scenegraph/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/search/package.json b/examples/search/package.json new file mode 100644 index 0000000000..c69484f950 --- /dev/null +++ b/examples/search/package.json @@ -0,0 +1,27 @@ +{ + "name": "search", + "version": "0.0.1", + "description": "TODO", + "repository": "https://github.com/thi-ng/umbrella", + "author": "Karsten Schmidt ", + "license": "Apache-2.0", + "scripts": { + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" + }, + "dependencies": { + "@thi.ng/api": "latest", + "@thi.ng/rstream": "latest", + "@thi.ng/transducers-hdom": "latest" + }, + "browserslist": [ + "last 3 Chrome versions" + ], + "browser": { + "process": false + }, + "thi.ng": { + "skip": true + } +} diff --git a/examples/shader-ast-canvas2d/.gitignore b/examples/shader-ast-canvas2d/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/shader-ast-canvas2d/.gitignore +++ b/examples/shader-ast-canvas2d/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/shader-ast-canvas2d/package.json b/examples/shader-ast-canvas2d/package.json index f143455efc..2493cad8e8 100644 --- a/examples/shader-ast-canvas2d/package.json +++ b/examples/shader-ast-canvas2d/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/shader-ast": "latest", @@ -30,5 +25,8 @@ "thi.ng": { "readme": true, "screenshot": "shader-ast/shader-ast-01.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/shader-ast-canvas2d/index.html b/examples/shader-ast-canvas2d/public/index.html similarity index 90% rename from examples/shader-ast-canvas2d/index.html rename to examples/shader-ast-canvas2d/public/index.html index df698480a0..ca01523ce3 100644 --- a/examples/shader-ast-canvas2d/index.html +++ b/examples/shader-ast-canvas2d/public/index.html @@ -19,6 +19,6 @@
- + diff --git a/examples/shader-ast-canvas2d/snowpack.config.js b/examples/shader-ast-canvas2d/snowpack.config.js new file mode 100644 index 0000000000..71cbf59590 --- /dev/null +++ b/examples/shader-ast-canvas2d/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/shader-ast-canvas2d", + }, +}; diff --git a/examples/shader-ast-canvas2d/src/static.d.ts b/examples/shader-ast-canvas2d/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/shader-ast-canvas2d/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/shader-ast-canvas2d/tsconfig.json b/examples/shader-ast-canvas2d/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/shader-ast-canvas2d/tsconfig.json +++ b/examples/shader-ast-canvas2d/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/shader-ast-evo/.gitignore b/examples/shader-ast-evo/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/shader-ast-evo/.gitignore +++ b/examples/shader-ast-evo/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/shader-ast-evo/package.json b/examples/shader-ast-evo/package.json index 97b20787f7..fd4b41d46f 100644 --- a/examples/shader-ast-evo/package.json +++ b/examples/shader-ast-evo/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/gp": "latest", @@ -41,5 +35,8 @@ "webgl-shadertoy" ], "screenshot": "examples/shader-ast-evo.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/shader-ast-evo/index.html b/examples/shader-ast-evo/public/index.html similarity index 93% rename from examples/shader-ast-evo/index.html rename to examples/shader-ast-evo/public/index.html index f5b3bfb484..db03500b5b 100644 --- a/examples/shader-ast-evo/index.html +++ b/examples/shader-ast-evo/public/index.html @@ -27,6 +27,6 @@ >Source code - + diff --git a/examples/shader-ast-evo/snowpack.config.js b/examples/shader-ast-evo/snowpack.config.js new file mode 100644 index 0000000000..55c83af024 --- /dev/null +++ b/examples/shader-ast-evo/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/shader-ast-evo", + }, +}; diff --git a/examples/shader-ast-evo/src/static.d.ts b/examples/shader-ast-evo/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/shader-ast-evo/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/shader-ast-evo/src/webpack.d.ts b/examples/shader-ast-evo/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/shader-ast-evo/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/shader-ast-evo/tsconfig.json b/examples/shader-ast-evo/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/shader-ast-evo/tsconfig.json +++ b/examples/shader-ast-evo/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/shader-ast-evo/webpack.config.js b/examples/shader-ast-evo/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/shader-ast-evo/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/shader-ast-noise/.gitignore b/examples/shader-ast-noise/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/shader-ast-noise/.gitignore +++ b/examples/shader-ast-noise/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/shader-ast-noise/package.json b/examples/shader-ast-noise/package.json index 451ce72ce7..3c12fe13de 100644 --- a/examples/shader-ast-noise/package.json +++ b/examples/shader-ast-noise/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/shader-ast": "latest", @@ -32,5 +26,8 @@ "thi.ng": { "readme": true, "screenshot": "examples/shader-ast-noise.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/shader-ast-noise/index.html b/examples/shader-ast-noise/public/index.html similarity index 95% rename from examples/shader-ast-noise/index.html rename to examples/shader-ast-noise/public/index.html index ced540c713..740988ba0d 100644 --- a/examples/shader-ast-noise/index.html +++ b/examples/shader-ast-noise/public/index.html @@ -38,6 +38,6 @@ >

- + diff --git a/examples/shader-ast-noise/snowpack.config.js b/examples/shader-ast-noise/snowpack.config.js new file mode 100644 index 0000000000..2e478138a3 --- /dev/null +++ b/examples/shader-ast-noise/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/shader-ast-noise", + }, +}; diff --git a/examples/shader-ast-noise/src/static.d.ts b/examples/shader-ast-noise/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/shader-ast-noise/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/shader-ast-noise/tsconfig.json b/examples/shader-ast-noise/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/shader-ast-noise/tsconfig.json +++ b/examples/shader-ast-noise/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/shader-ast-noise/webpack.config.js b/examples/shader-ast-noise/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/shader-ast-noise/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/shader-ast-raymarch/.gitignore b/examples/shader-ast-raymarch/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/shader-ast-raymarch/.gitignore +++ b/examples/shader-ast-raymarch/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/shader-ast-raymarch/package.json b/examples/shader-ast-raymarch/package.json index fa9a7a8bc2..f57517b8dc 100644 --- a/examples/shader-ast-raymarch/package.json +++ b/examples/shader-ast-raymarch/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/shader-ast": "latest", @@ -32,5 +26,8 @@ "thi.ng": { "readme": true, "screenshot": "shader-ast/shader-ast-raymarch.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/shader-ast-raymarch/index.html b/examples/shader-ast-raymarch/public/index.html similarity index 95% rename from examples/shader-ast-raymarch/index.html rename to examples/shader-ast-raymarch/public/index.html index 62261bd267..3193ab4570 100644 --- a/examples/shader-ast-raymarch/index.html +++ b/examples/shader-ast-raymarch/public/index.html @@ -38,6 +38,6 @@ >

- + diff --git a/examples/shader-ast-raymarch/snowpack.config.js b/examples/shader-ast-raymarch/snowpack.config.js new file mode 100644 index 0000000000..b7f728c807 --- /dev/null +++ b/examples/shader-ast-raymarch/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/shader-ast-raymarch", + }, +}; diff --git a/examples/shader-ast-raymarch/src/static.d.ts b/examples/shader-ast-raymarch/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/shader-ast-raymarch/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/shader-ast-raymarch/tsconfig.json b/examples/shader-ast-raymarch/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/shader-ast-raymarch/tsconfig.json +++ b/examples/shader-ast-raymarch/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/shader-ast-raymarch/webpack.config.js b/examples/shader-ast-raymarch/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/shader-ast-raymarch/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/shader-ast-sdf2d/.gitignore b/examples/shader-ast-sdf2d/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/shader-ast-sdf2d/.gitignore +++ b/examples/shader-ast-sdf2d/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/shader-ast-sdf2d/assets/tex.jpg b/examples/shader-ast-sdf2d/assets/tex.jpg deleted file mode 100644 index d9ee61d1c04601578f5df66f32094735ba206951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396018 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

>jVKKhgS%BQt^~_WOg5hv% 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�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 P~-wMKSQU4V9yL^Yw;TGI`k0ispi%$GJXPhkOA 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%0A&!8YE5Xz)C^IGBNq*G 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", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/shader-ast": "latest", @@ -32,5 +26,8 @@ "thi.ng": { "readme": true, "screenshot": "examples/shader-ast-sdf2d.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/shader-ast-sdf2d/index.html b/examples/shader-ast-sdf2d/public/index.html similarity index 95% rename from examples/shader-ast-sdf2d/index.html rename to examples/shader-ast-sdf2d/public/index.html index 5c62c6bbc0..6862ca53fe 100644 --- a/examples/shader-ast-sdf2d/index.html +++ b/examples/shader-ast-sdf2d/public/index.html @@ -38,6 +38,6 @@ >

- + diff --git a/examples/shader-ast-sdf2d/snowpack.config.js b/examples/shader-ast-sdf2d/snowpack.config.js new file mode 100644 index 0000000000..d14c02ffa9 --- /dev/null +++ b/examples/shader-ast-sdf2d/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/shader-ast-sdf2d", + }, +}; diff --git a/examples/shader-ast-sdf2d/src/static.d.ts b/examples/shader-ast-sdf2d/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/shader-ast-sdf2d/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/shader-ast-sdf2d/tsconfig.json b/examples/shader-ast-sdf2d/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/shader-ast-sdf2d/tsconfig.json +++ b/examples/shader-ast-sdf2d/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/shader-ast-sdf2d/webpack.config.js b/examples/shader-ast-sdf2d/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/shader-ast-sdf2d/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/shader-ast-tunnel/.gitignore b/examples/shader-ast-tunnel/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/shader-ast-tunnel/.gitignore +++ b/examples/shader-ast-tunnel/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/shader-ast-tunnel/assets/tex.jpg b/examples/shader-ast-tunnel/assets/tex.jpg deleted file mode 100644 index d9ee61d1c04601578f5df66f32094735ba206951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396018 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%0A&!8YE5Xz)C^IGBNq*G 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", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/binary": "latest", @@ -39,5 +33,8 @@ "webgl" ], "screenshot": "examples/shader-ast-tunnel.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/shader-ast-tunnel/index.html b/examples/shader-ast-tunnel/public/index.html similarity index 95% rename from examples/shader-ast-tunnel/index.html rename to examples/shader-ast-tunnel/public/index.html index 4d4421654e..9080f1d26f 100644 --- a/examples/shader-ast-tunnel/index.html +++ b/examples/shader-ast-tunnel/public/index.html @@ -38,6 +38,6 @@ >

- + diff --git a/examples/shader-ast-tunnel/snowpack.config.js b/examples/shader-ast-tunnel/snowpack.config.js new file mode 100644 index 0000000000..fe00fecc47 --- /dev/null +++ b/examples/shader-ast-tunnel/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/shader-ast-tunnel", + }, +}; diff --git a/examples/shader-ast-tunnel/src/index.ts b/examples/shader-ast-tunnel/src/index.ts index dad5993b05..346039f5d0 100644 --- a/examples/shader-ast-tunnel/src/index.ts +++ b/examples/shader-ast-tunnel/src/index.ts @@ -40,7 +40,7 @@ import { TextureFilter, TextureRepeat, } from "@thi.ng/webgl"; -import TEX_URL from "../assets/tex.jpg"; +import TEX_URL from "./tex.jpg"; // set URL hash to "#2d" to enable JS Canvas2D version const JS_MODE = location.hash.indexOf("2d") >= 0; diff --git a/examples/shader-ast-tunnel/src/static.d.ts b/examples/shader-ast-tunnel/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/shader-ast-tunnel/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/shader-ast-raymarch/assets/tex.jpg b/examples/shader-ast-tunnel/src/tex.jpg similarity index 100% rename from examples/shader-ast-raymarch/assets/tex.jpg rename to examples/shader-ast-tunnel/src/tex.jpg diff --git a/examples/shader-ast-tunnel/src/webpack.d.ts b/examples/shader-ast-tunnel/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/shader-ast-tunnel/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/shader-ast-tunnel/tsconfig.json b/examples/shader-ast-tunnel/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/shader-ast-tunnel/tsconfig.json +++ b/examples/shader-ast-tunnel/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/shader-ast-tunnel/webpack.config.js b/examples/shader-ast-tunnel/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/shader-ast-tunnel/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/shader-graph/.gitignore b/examples/shader-graph/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/shader-graph/.gitignore +++ b/examples/shader-graph/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/shader-graph/package.json b/examples/shader-graph/package.json index 59c31c5677..eaf36b6330 100644 --- a/examples/shader-graph/package.json +++ b/examples/shader-graph/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -43,5 +37,8 @@ "webgl" ], "screenshot": "examples/shader-graph.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/shader-graph/index.html b/examples/shader-graph/public/index.html similarity index 92% rename from examples/shader-graph/index.html rename to examples/shader-graph/public/index.html index dc9032c448..0357011a0e 100644 --- a/examples/shader-graph/index.html +++ b/examples/shader-graph/public/index.html @@ -25,6 +25,6 @@ >Source code
- + diff --git a/examples/shader-graph/snowpack.config.js b/examples/shader-graph/snowpack.config.js new file mode 100644 index 0000000000..88f67b623b --- /dev/null +++ b/examples/shader-graph/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/shader-graph", + }, +}; diff --git a/examples/shader-graph/src/api.ts b/examples/shader-graph/src/api.ts index d1f7cd1d06..63e960fdf3 100644 --- a/examples/shader-graph/src/api.ts +++ b/examples/shader-graph/src/api.ts @@ -1,6 +1,6 @@ -import { Fn4 } from "@thi.ng/api"; -import { Node2D } from "@thi.ng/scenegraph"; -import { +import type { Fn4 } from "@thi.ng/api"; +import type { Node2D } from "@thi.ng/scenegraph"; +import type { FloatSym, Func, Sampler2DSym, @@ -8,8 +8,8 @@ import { Vec2Sym, Vec4Sym, } from "@thi.ng/shader-ast"; -import { GLSLTarget } from "@thi.ng/shader-ast-glsl"; -import { ModelSpec, Texture } from "@thi.ng/webgl"; +import type { GLSLTarget } from "@thi.ng/shader-ast-glsl"; +import type { ModelSpec, Texture } from "@thi.ng/webgl"; export interface AppCtx { /** diff --git a/examples/shader-graph/src/index.ts b/examples/shader-graph/src/index.ts index 1da9538105..adce8c9d11 100644 --- a/examples/shader-graph/src/index.ts +++ b/examples/shader-graph/src/index.ts @@ -32,7 +32,7 @@ import { glCanvas, GLMat4, } from "@thi.ng/webgl"; -import { AppCtx } from "./api"; +import type { AppCtx } from "./api"; import { OpNode } from "./opnode"; // setLogger(new ConsoleLogger("webgl", LogLevel.DEBUG)); diff --git a/examples/shader-graph/src/opnode.ts b/examples/shader-graph/src/opnode.ts index 0d4e32edcf..567b998636 100644 --- a/examples/shader-graph/src/opnode.ts +++ b/examples/shader-graph/src/opnode.ts @@ -1,4 +1,4 @@ -import { IObjectOf } from "@thi.ng/api"; +import type { IObjectOf } from "@thi.ng/api"; import { mat23to44 } from "@thi.ng/matrices"; import { defFBO, @@ -14,7 +14,7 @@ import { Texture, TextureFilter, } from "@thi.ng/webgl"; -import { AppCtx, OpSpec, UserUniforms } from "./api"; +import type { AppCtx, OpSpec, UserUniforms } from "./api"; export class OpNode { tex: Texture; diff --git a/examples/shader-graph/src/static.d.ts b/examples/shader-graph/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/shader-graph/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/shader-graph/src/webpack.d.ts b/examples/shader-graph/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/shader-graph/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/shader-graph/tsconfig.json b/examples/shader-graph/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/shader-graph/tsconfig.json +++ b/examples/shader-graph/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/shader-graph/webpack.config.js b/examples/shader-graph/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/shader-graph/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/soa-ecs/.gitignore b/examples/soa-ecs/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/soa-ecs/.gitignore +++ b/examples/soa-ecs/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/soa-ecs/package.json b/examples/soa-ecs/package.json index 0cc93ae962..124c699ff2 100644 --- a/examples/soa-ecs/package.json +++ b/examples/soa-ecs/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/adapt-dpi": "latest", @@ -32,7 +26,8 @@ "last 3 Chrome versions" ], "browser": { - "process": false + "process": false, + "setTimeout": false }, "thi.ng": { "readme": [ @@ -47,5 +42,8 @@ "webgl" ], "screenshot": "examples/soa-ecs-100k.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/soa-ecs/index.html b/examples/soa-ecs/public/index.html similarity index 93% rename from examples/soa-ecs/index.html rename to examples/soa-ecs/public/index.html index 4febbffc64..43ed6b95cb 100644 --- a/examples/soa-ecs/index.html +++ b/examples/soa-ecs/public/index.html @@ -27,6 +27,6 @@ >Source code --> - + diff --git a/examples/soa-ecs/snowpack.config.js b/examples/soa-ecs/snowpack.config.js new file mode 100644 index 0000000000..765eced3f5 --- /dev/null +++ b/examples/soa-ecs/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/soa-ecs", + }, +}; diff --git a/examples/soa-ecs/src/static.d.ts b/examples/soa-ecs/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/soa-ecs/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/soa-ecs/src/webpack.d.ts b/examples/soa-ecs/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/soa-ecs/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/soa-ecs/tsconfig.json b/examples/soa-ecs/tsconfig.json index 4fee6fa2b0..48d558b4f8 100644 --- a/examples/soa-ecs/tsconfig.json +++ b/examples/soa-ecs/tsconfig.json @@ -1,11 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true, - "noUnusedLocals": false, - "noUnusedParameters": false - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/soa-ecs/webpack.config.js b/examples/soa-ecs/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/soa-ecs/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/stratified-grid/.gitignore b/examples/stratified-grid/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/stratified-grid/.gitignore +++ b/examples/stratified-grid/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/stratified-grid/package.json b/examples/stratified-grid/package.json index 68feba0d78..ee1e299474 100644 --- a/examples/stratified-grid/package.json +++ b/examples/stratified-grid/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/geom": "latest", @@ -35,5 +29,8 @@ "poisson" ], "screenshot": "poisson/stratified-grid.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/stratified-grid/index.html b/examples/stratified-grid/public/index.html similarity index 92% rename from examples/stratified-grid/index.html rename to examples/stratified-grid/public/index.html index 2fc94d56e1..c9f59c2335 100644 --- a/examples/stratified-grid/index.html +++ b/examples/stratified-grid/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/stratified-grid/snowpack.config.js b/examples/stratified-grid/snowpack.config.js new file mode 100644 index 0000000000..318ed0a9ee --- /dev/null +++ b/examples/stratified-grid/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/stratified-grid", + }, +}; diff --git a/examples/stratified-grid/src/static.d.ts b/examples/stratified-grid/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/stratified-grid/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/stratified-grid/src/webpack.d.ts b/examples/stratified-grid/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/stratified-grid/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/stratified-grid/tsconfig.json b/examples/stratified-grid/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/stratified-grid/tsconfig.json +++ b/examples/stratified-grid/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/stratified-grid/webpack.config.js b/examples/stratified-grid/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/stratified-grid/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/svg-barchart/.gitignore b/examples/svg-barchart/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/svg-barchart/.gitignore +++ b/examples/svg-barchart/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/svg-barchart/package.json b/examples/svg-barchart/package.json index ce54409e5a..d2c5fd4a6b 100644 --- a/examples/svg-barchart/package.json +++ b/examples/svg-barchart/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -29,5 +24,8 @@ "thi.ng": { "readme": true, "screenshot": "examples/svg-barchart.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/svg-barchart/index.html b/examples/svg-barchart/public/index.html similarity index 90% rename from examples/svg-barchart/index.html rename to examples/svg-barchart/public/index.html index 3f7d31415b..4e0791247a 100644 --- a/examples/svg-barchart/index.html +++ b/examples/svg-barchart/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/svg-barchart/snowpack.config.js b/examples/svg-barchart/snowpack.config.js new file mode 100644 index 0000000000..5466adb6ad --- /dev/null +++ b/examples/svg-barchart/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/svg-barchart", + }, +}; diff --git a/examples/svg-barchart/src/index.ts b/examples/svg-barchart/src/index.ts index cd27828409..a4fb01b923 100644 --- a/examples/svg-barchart/src/index.ts +++ b/examples/svg-barchart/src/index.ts @@ -106,8 +106,3 @@ renderOnce([ map((year) => [year, Math.random() * 100], range(1980, 2020, 2)), ], ]); - -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => clearDOM(document.getElementById("app")!)); -} diff --git a/examples/svg-barchart/src/static.d.ts b/examples/svg-barchart/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/svg-barchart/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/svg-barchart/tsconfig.json b/examples/svg-barchart/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/svg-barchart/tsconfig.json +++ b/examples/svg-barchart/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/svg-particles/.gitignore b/examples/svg-particles/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/svg-particles/.gitignore +++ b/examples/svg-particles/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/svg-particles/package.json b/examples/svg-particles/package.json index 19cd75d4cb..c907f23b20 100644 --- a/examples/svg-particles/package.json +++ b/examples/svg-particles/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -26,5 +21,8 @@ "browser": { "process": false }, - "thi.ng": {} + "thi.ng": {}, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" + } } diff --git a/examples/svg-particles/index.html b/examples/svg-particles/public/index.html similarity index 93% rename from examples/svg-particles/index.html rename to examples/svg-particles/public/index.html index 47d2c1fb20..d930089f57 100644 --- a/examples/svg-particles/index.html +++ b/examples/svg-particles/public/index.html @@ -38,6 +38,6 @@ >@thi.ng/hdom. - + diff --git a/examples/svg-particles/snowpack.config.js b/examples/svg-particles/snowpack.config.js new file mode 100644 index 0000000000..e46b4d2b07 --- /dev/null +++ b/examples/svg-particles/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/svg-particles", + }, +}; diff --git a/examples/svg-particles/src/static.d.ts b/examples/svg-particles/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/svg-particles/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/svg-particles/tsconfig.json b/examples/svg-particles/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/svg-particles/tsconfig.json +++ b/examples/svg-particles/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/svg-waveform/.gitignore b/examples/svg-waveform/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/svg-waveform/.gitignore +++ b/examples/svg-waveform/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/svg-waveform/package.json b/examples/svg-waveform/package.json index 6d0f2103a1..1f2af98afb 100644 --- a/examples/svg-waveform/package.json +++ b/examples/svg-waveform/package.json @@ -6,10 +6,9 @@ "author": "Karsten Schmidt", "license": "MIT", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -20,12 +19,6 @@ "@thi.ng/interceptors": "latest", "@thi.ng/transducers": "latest" }, - "devDependencies": { - "@types/node": "^13.7.4", - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" - }, "browserslist": [ "last 3 Chrome versions" ], @@ -41,5 +34,8 @@ "transducers" ], "screenshot": "examples/svg-waveform.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/svg-waveform/index.html b/examples/svg-waveform/public/index.html similarity index 92% rename from examples/svg-waveform/index.html rename to examples/svg-waveform/public/index.html index 7a4252a809..a39c39a0ec 100644 --- a/examples/svg-waveform/index.html +++ b/examples/svg-waveform/public/index.html @@ -28,6 +28,6 @@
- + diff --git a/examples/svg-waveform/snowpack.config.js b/examples/svg-waveform/snowpack.config.js new file mode 100644 index 0000000000..9a9f18026f --- /dev/null +++ b/examples/svg-waveform/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/svg-waveform", + }, +}; diff --git a/examples/svg-waveform/src/api.ts b/examples/svg-waveform/src/api.ts index 5aa4dd7043..cc4ae69b57 100644 --- a/examples/svg-waveform/src/api.ts +++ b/examples/svg-waveform/src/api.ts @@ -1,6 +1,6 @@ import type { Fn, IObjectOf, Path } from "@thi.ng/api"; import type { IView } from "@thi.ng/atom"; -import { EffectDef, EventBus, EventDef } from "@thi.ng/interceptors"; +import type { EffectDef, EventBus, EventDef } from "@thi.ng/interceptors"; /** * Function signature for main app components. diff --git a/examples/svg-waveform/src/config.ts b/examples/svg-waveform/src/config.ts index 31ffb264f1..2de845b3a2 100644 --- a/examples/svg-waveform/src/config.ts +++ b/examples/svg-waveform/src/config.ts @@ -1,5 +1,5 @@ import { ensureParamRange, snapshot, valueSetter } from "@thi.ng/interceptors"; -import { AppConfig } from "./api"; +import type { AppConfig } from "./api"; import { main } from "./components/main"; import { SLIDERS } from "./sliders"; // import * as ev from "./events"; diff --git a/examples/svg-waveform/src/effects.ts b/examples/svg-waveform/src/effects.ts index 65dd20a07c..7b4efbbe9a 100644 --- a/examples/svg-waveform/src/effects.ts +++ b/examples/svg-waveform/src/effects.ts @@ -7,3 +7,5 @@ * Effect description */ // export const FOO = "foo"; + +export {}; diff --git a/examples/svg-waveform/src/index.ts b/examples/svg-waveform/src/index.ts index d72f64a3bc..700546a668 100644 --- a/examples/svg-waveform/src/index.ts +++ b/examples/svg-waveform/src/index.ts @@ -1,10 +1,8 @@ +import { exposeGlobal } from "@thi.ng/api"; import { App } from "./app"; import { CONFIG } from "./config"; -// export app to global var in dev mode -// (for interaction via browser dev tools) -if (process.env.NODE_ENV == "development") { - ((window)["APP"] = new App(CONFIG)).start(); -} else { - new App(CONFIG).start(); -} +const APP = new App(CONFIG); +exposeGlobal("APP", APP); + +APP.start(); diff --git a/examples/svg-waveform/src/static.d.ts b/examples/svg-waveform/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/svg-waveform/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/svg-waveform/tsconfig.json b/examples/svg-waveform/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/svg-waveform/tsconfig.json +++ b/examples/svg-waveform/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/svg-waveform/webpack.config.js b/examples/svg-waveform/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/svg-waveform/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/talk-slides/.gitignore b/examples/talk-slides/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/talk-slides/.gitignore +++ b/examples/talk-slides/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/talk-slides/package.json b/examples/talk-slides/package.json index 4b6f273041..5b55cf367b 100644 --- a/examples/talk-slides/package.json +++ b/examples/talk-slides/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/hdom": "latest", @@ -37,5 +31,8 @@ "transducers-hdom" ], "screenshot": "examples/talk-slides.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/talk-slides/index.html b/examples/talk-slides/public/index.html similarity index 94% rename from examples/talk-slides/index.html rename to examples/talk-slides/public/index.html index 494f18629f..33d9a951b4 100644 --- a/examples/talk-slides/index.html +++ b/examples/talk-slides/public/index.html @@ -42,6 +42,6 @@
- + diff --git a/examples/talk-slides/snowpack.config.js b/examples/talk-slides/snowpack.config.js new file mode 100644 index 0000000000..ed8dbf5a41 --- /dev/null +++ b/examples/talk-slides/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/talk-slides", + }, +}; diff --git a/examples/talk-slides/src/index.ts b/examples/talk-slides/src/index.ts index a521b91653..06b41635a4 100644 --- a/examples/talk-slides/src/index.ts +++ b/examples/talk-slides/src/index.ts @@ -72,11 +72,11 @@ if (INTERACTIVE) { renderOnce(() => [printApp, SLIDES], { ctx }); } -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && - hot.dispose(() => { - slideCTRL.done(); - main.done(); - }); -} +// if (process.env.NODE_ENV !== "production") { +// const hot = (module).hot; +// hot && +// hot.dispose(() => { +// slideCTRL.done(); +// main.done(); +// }); +// } diff --git a/examples/talk-slides/src/static.d.ts b/examples/talk-slides/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/talk-slides/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/talk-slides/tsconfig.json b/examples/talk-slides/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/talk-slides/tsconfig.json +++ b/examples/talk-slides/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/talk-slides/webpack.config.js b/examples/talk-slides/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/talk-slides/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/texgen/src/webpack.d.ts b/examples/texgen/src/webpack.d.ts deleted file mode 100644 index 6e39ca7616..0000000000 --- a/examples/texgen/src/webpack.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; diff --git a/examples/text-canvas/.gitignore b/examples/text-canvas/.gitignore index 5d62218c54..e228563433 100644 --- a/examples/text-canvas/.gitignore +++ b/examples/text-canvas/.gitignore @@ -1,8 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js -*.map -!src/*.d.ts -!*.config.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/text-canvas/package.json b/examples/text-canvas/package.json index f45905ccf8..6a1524fc96 100644 --- a/examples/text-canvas/package.json +++ b/examples/text-canvas/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/dsp": "latest", @@ -32,5 +26,8 @@ "thi.ng": { "readme": true, "screenshot": "examples/text-canvas.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/text-canvas/index.html b/examples/text-canvas/public/index.html similarity index 94% rename from examples/text-canvas/index.html rename to examples/text-canvas/public/index.html index f410d9f266..ac70022eb8 100644 --- a/examples/text-canvas/index.html +++ b/examples/text-canvas/public/index.html @@ -37,6 +37,6 @@ >Source code - + diff --git a/examples/text-canvas/snowpack.config.js b/examples/text-canvas/snowpack.config.js new file mode 100644 index 0000000000..dea95ded68 --- /dev/null +++ b/examples/text-canvas/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/text-canvas", + }, +}; diff --git a/examples/text-canvas/src/static.d.ts b/examples/text-canvas/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/text-canvas/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/text-canvas/src/webpack.d.ts b/examples/text-canvas/src/webpack.d.ts deleted file mode 100644 index 2966449833..0000000000 --- a/examples/text-canvas/src/webpack.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.jpg"; -declare module "*.png"; -declare module "*.svg"; -declare module "*.json"; diff --git a/examples/text-canvas/tsconfig.json b/examples/text-canvas/tsconfig.json index 742fca52a4..48d558b4f8 100644 --- a/examples/text-canvas/tsconfig.json +++ b/examples/text-canvas/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/text-canvas/webpack.config.js b/examples/text-canvas/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/text-canvas/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/todo-list/.gitignore b/examples/todo-list/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/todo-list/.gitignore +++ b/examples/todo-list/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/todo-list/package.json b/examples/todo-list/package.json index 74a270599c..839206a090 100644 --- a/examples/todo-list/package.json +++ b/examples/todo-list/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -35,5 +30,8 @@ "paths" ], "screenshot": "examples/todo-list.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/todo-list/index.html b/examples/todo-list/public/index.html similarity index 96% rename from examples/todo-list/index.html rename to examples/todo-list/public/index.html index 2c7b4dfcd1..0b09559d4b 100644 --- a/examples/todo-list/index.html +++ b/examples/todo-list/public/index.html @@ -78,6 +78,6 @@
- + diff --git a/examples/todo-list/snowpack.config.js b/examples/todo-list/snowpack.config.js new file mode 100644 index 0000000000..f4fbd8ee77 --- /dev/null +++ b/examples/todo-list/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/todo-list", + }, +}; diff --git a/examples/todo-list/src/static.d.ts b/examples/todo-list/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/todo-list/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/todo-list/tsconfig.json b/examples/todo-list/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/todo-list/tsconfig.json +++ b/examples/todo-list/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/transducers-hdom/.gitignore b/examples/transducers-hdom/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/transducers-hdom/.gitignore +++ b/examples/transducers-hdom/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/transducers-hdom/package.json b/examples/transducers-hdom/package.json index 0264cbda9d..ae025221cc 100644 --- a/examples/transducers-hdom/package.json +++ b/examples/transducers-hdom/package.json @@ -6,14 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/rstream": "latest", @@ -31,5 +26,8 @@ "rstream", "transducers-hdom" ] + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/transducers-hdom/index.html b/examples/transducers-hdom/public/index.html similarity index 90% rename from examples/transducers-hdom/index.html rename to examples/transducers-hdom/public/index.html index 1a73e1ed7f..342159fa9a 100644 --- a/examples/transducers-hdom/index.html +++ b/examples/transducers-hdom/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/transducers-hdom/snowpack.config.js b/examples/transducers-hdom/snowpack.config.js new file mode 100644 index 0000000000..cf15009c8a --- /dev/null +++ b/examples/transducers-hdom/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/transducers-hdom", + }, +}; diff --git a/examples/transducers-hdom/src/static.d.ts b/examples/transducers-hdom/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/transducers-hdom/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/transducers-hdom/tsconfig.json b/examples/transducers-hdom/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/transducers-hdom/tsconfig.json +++ b/examples/transducers-hdom/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/triple-query/.gitignore b/examples/triple-query/.gitignore index 0c5abcab62..e228563433 100644 --- a/examples/triple-query/.gitignore +++ b/examples/triple-query/.gitignore @@ -1,5 +1,6 @@ -.cache -out +build +dev node_modules yarn.lock -*.js +!snowpack.config.js +!*.d.ts \ No newline at end of file diff --git a/examples/triple-query/package.json b/examples/triple-query/package.json index 9478830bdf..a8b0069be1 100644 --- a/examples/triple-query/package.json +++ b/examples/triple-query/package.json @@ -6,15 +6,9 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "../../node_modules/.bin/snowpack dev", + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/api": "latest", @@ -45,5 +39,8 @@ "transducers" ], "screenshot": "examples/triple-query.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/triple-query/index.html b/examples/triple-query/public/index.html similarity index 92% rename from examples/triple-query/index.html rename to examples/triple-query/public/index.html index 317ad8c2c6..08db3aec4b 100644 --- a/examples/triple-query/index.html +++ b/examples/triple-query/public/index.html @@ -28,6 +28,6 @@
- + diff --git a/examples/triple-query/snowpack.config.js b/examples/triple-query/snowpack.config.js new file mode 100644 index 0000000000..800d272938 --- /dev/null +++ b/examples/triple-query/snowpack.config.js @@ -0,0 +1,29 @@ +/** @type {import("snowpack").SnowpackUserConfig } */ +module.exports = { + mount: { + public: "/", + src: "/_dist_", + }, + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], + installOptions: { + installTypes: true, + }, + buildOptions: { + baseUrl: "/triple-query", + }, +}; diff --git a/examples/triple-query/src/api.ts b/examples/triple-query/src/api.ts index 00bab12138..dc77a28de9 100644 --- a/examples/triple-query/src/api.ts +++ b/examples/triple-query/src/api.ts @@ -1,12 +1,12 @@ import type { Fn, IObjectOf, Path } from "@thi.ng/api"; import type { IView } from "@thi.ng/atom"; -import { +import type { EffectDef, EventBus, EventDef, InterceptorContext, } from "@thi.ng/interceptors"; -import { QuerySpec, TripleStore } from "@thi.ng/rstream-query"; +import type { QuerySpec, TripleStore } from "@thi.ng/rstream-query"; /** * Function signature for main app components. diff --git a/examples/triple-query/src/handlers.ts b/examples/triple-query/src/handlers.ts index d41a177526..e931d5ec5b 100644 --- a/examples/triple-query/src/handlers.ts +++ b/examples/triple-query/src/handlers.ts @@ -55,7 +55,7 @@ export const EVENTS: IObjectOf = { [ev.SET_PAGE]: [valueSetter("page"), dispatchNow([ev.UPDATE_PAGE])], - [ev.UPDATE_PAGE]: (state, _, __, ctx: AppInterceptorContext) => { + [ev.UPDATE_PAGE]: (state, _, __, ctx) => { const maxPage = Math.floor( Math.max(0, ctx.store.triples.length - 1) / PAGE_LEN ); @@ -71,7 +71,7 @@ export const EVENTS: IObjectOf = { [ ...iterator( comp( - page(curr, PAGE_LEN), + page(curr, PAGE_LEN), mapIndexed( (i, x: Triple) => [i + 1, ...x], curr * PAGE_LEN @@ -89,11 +89,11 @@ export const EVENTS: IObjectOf = { }; export const EFFECTS: IObjectOf = { - [fx.ADD_TRIPLE]: (triple: Triple, bus, ctx: AppInterceptorContext) => { + [fx.ADD_TRIPLE]: (triple: Triple, bus, ctx) => { ctx.store.add(triple); bus.dispatch([ev.UPDATE_PAGE]); }, - [fx.REMOVE_TRIPLE]: (triple: Triple, bus, ctx: AppInterceptorContext) => { + [fx.REMOVE_TRIPLE]: (triple: Triple, bus, ctx) => { ctx.store.delete(triple); bus.dispatch([ev.UPDATE_PAGE]); }, diff --git a/examples/triple-query/src/index.ts b/examples/triple-query/src/index.ts index d72f64a3bc..700546a668 100644 --- a/examples/triple-query/src/index.ts +++ b/examples/triple-query/src/index.ts @@ -1,10 +1,8 @@ +import { exposeGlobal } from "@thi.ng/api"; import { App } from "./app"; import { CONFIG } from "./config"; -// export app to global var in dev mode -// (for interaction via browser dev tools) -if (process.env.NODE_ENV == "development") { - ((window)["APP"] = new App(CONFIG)).start(); -} else { - new App(CONFIG).start(); -} +const APP = new App(CONFIG); +exposeGlobal("APP", APP); + +APP.start(); diff --git a/examples/triple-query/src/static.d.ts b/examples/triple-query/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/triple-query/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/triple-query/tsconfig.json b/examples/triple-query/tsconfig.json index 0f5da53283..48d558b4f8 100644 --- a/examples/triple-query/tsconfig.json +++ b/examples/triple-query/tsconfig.json @@ -1,11 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true, - "strictFunctionTypes": false - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/triple-query/webpack.config.js b/examples/triple-query/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/triple-query/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/tsconfig.json b/examples/tsconfig.json new file mode 100644 index 0000000000..ccebab392a --- /dev/null +++ b/examples/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "importsNotUsedAsValues": "error", + "isolatedModules": true, + "noEmit": true, + "strict": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "useDefineForClassFields": true, + "experimentalDecorators": true + } +} diff --git a/examples/webgl-cube/package.json b/examples/webgl-cube/package.json index 325c0f929b..5f09b4dff6 100644 --- a/examples/webgl-cube/package.json +++ b/examples/webgl-cube/package.json @@ -34,5 +34,8 @@ "webgl" ], "screenshot": "examples/webgl-cube.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/webgl-cube/snowpack.config.js b/examples/webgl-cube/snowpack.config.js index 31e0774caa..80a069a0a7 100644 --- a/examples/webgl-cube/snowpack.config.js +++ b/examples/webgl-cube/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/webgl-cube/src/static.d.ts b/examples/webgl-cube/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/webgl-cube/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/webgl-cubemap/package.json b/examples/webgl-cubemap/package.json index f8c6cb2070..7b72b4c5f1 100644 --- a/examples/webgl-cubemap/package.json +++ b/examples/webgl-cubemap/package.json @@ -35,5 +35,8 @@ "webgl" ], "screenshot": "examples/webgl-cubemap.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/webgl-cubemap/snowpack.config.js b/examples/webgl-cubemap/snowpack.config.js index 3e644d8484..272173c640 100644 --- a/examples/webgl-cubemap/snowpack.config.js +++ b/examples/webgl-cubemap/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/webgl-cubemap/src/static.d.ts b/examples/webgl-cubemap/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/webgl-cubemap/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/webgl-grid/package.json b/examples/webgl-grid/package.json index c72f327d7e..85c5a3d052 100644 --- a/examples/webgl-grid/package.json +++ b/examples/webgl-grid/package.json @@ -37,5 +37,8 @@ "webgl" ], "screenshot": "examples/webgl-grid.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/webgl-grid/snowpack.config.js b/examples/webgl-grid/snowpack.config.js index e7696d4f54..6bdf2f25a1 100644 --- a/examples/webgl-grid/snowpack.config.js +++ b/examples/webgl-grid/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/webgl-grid/src/static.d.ts b/examples/webgl-grid/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/webgl-grid/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/webgl-msdf/.gitignore b/examples/webgl-msdf/.gitignore index 211b157174..e228563433 100644 --- a/examples/webgl-msdf/.gitignore +++ b/examples/webgl-msdf/.gitignore @@ -3,4 +3,4 @@ dev node_modules yarn.lock !snowpack.config.js -!*.d.ts +!*.d.ts \ No newline at end of file diff --git a/examples/webgl-msdf/package.json b/examples/webgl-msdf/package.json index a0bd359110..5daed837d1 100644 --- a/examples/webgl-msdf/package.json +++ b/examples/webgl-msdf/package.json @@ -44,5 +44,8 @@ "webgl-msdf" ], "screenshot": "examples/webgl-msdf.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/webgl-msdf/snowpack.config.js b/examples/webgl-msdf/snowpack.config.js index 8041c61a60..c1f0980412 100644 --- a/examples/webgl-msdf/snowpack.config.js +++ b/examples/webgl-msdf/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/webgl-multipass/package.json b/examples/webgl-multipass/package.json index ab9ee2d11d..118b9a94df 100644 --- a/examples/webgl-multipass/package.json +++ b/examples/webgl-multipass/package.json @@ -24,5 +24,8 @@ }, "thi.ng": { "readme": true + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/webgl-multipass/snowpack.config.js b/examples/webgl-multipass/snowpack.config.js index fd03c38f75..6abf0d57a3 100644 --- a/examples/webgl-multipass/snowpack.config.js +++ b/examples/webgl-multipass/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/webgl-multipass/src/static.d.ts b/examples/webgl-multipass/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/webgl-multipass/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/webgl-shadertoy/package.json b/examples/webgl-shadertoy/package.json index 9d30ef74c9..78a539290a 100644 --- a/examples/webgl-shadertoy/package.json +++ b/examples/webgl-shadertoy/package.json @@ -25,5 +25,8 @@ "thi.ng": { "readme": true, "screenshot": "examples/webgl-shadertoy.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/webgl-shadertoy/snowpack.config.js b/examples/webgl-shadertoy/snowpack.config.js index a67e8cc197..4b22fb5c72 100644 --- a/examples/webgl-shadertoy/snowpack.config.js +++ b/examples/webgl-shadertoy/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/webgl-shadertoy/src/static.d.ts b/examples/webgl-shadertoy/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/webgl-shadertoy/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/webgl-ssao/package.json b/examples/webgl-ssao/package.json index 7963357a55..8550a7b208 100644 --- a/examples/webgl-ssao/package.json +++ b/examples/webgl-ssao/package.json @@ -38,5 +38,8 @@ "webgl" ], "screenshot": "examples/webgl-ssao.jpg" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/webgl-ssao/snowpack.config.js b/examples/webgl-ssao/snowpack.config.js index fcc61f086d..062270df56 100644 --- a/examples/webgl-ssao/snowpack.config.js +++ b/examples/webgl-ssao/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/webgl-ssao/src/static.d.ts b/examples/webgl-ssao/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/webgl-ssao/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/wolfram/package.json b/examples/wolfram/package.json index 19d7e467b9..2c6001679b 100644 --- a/examples/wolfram/package.json +++ b/examples/wolfram/package.json @@ -32,5 +32,8 @@ "transducers-binary" ], "screenshot": "examples/wolfram.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/wolfram/snowpack.config.js b/examples/wolfram/snowpack.config.js index 4154e57989..5d4f31dca7 100644 --- a/examples/wolfram/snowpack.config.js +++ b/examples/wolfram/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/wolfram/src/static.d.ts b/examples/wolfram/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/wolfram/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ diff --git a/examples/xml-converter/package.json b/examples/xml-converter/package.json index 50e63d694d..87bca487a0 100644 --- a/examples/xml-converter/package.json +++ b/examples/xml-converter/package.json @@ -8,8 +8,7 @@ "scripts": { "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", "start": "../../node_modules/.bin/snowpack dev", - "build": "../../node_modules/.bin/snowpack build", - "build-cli": "tsc -p tsconfig-cli.json" + "build": "../../node_modules/.bin/snowpack build" }, "dependencies": { "@thi.ng/arrays": "latest", @@ -36,5 +35,8 @@ "transducers" ], "screenshot": "examples/xml-converter.png" + }, + "devDependencies": { + "@types/snowpack-env": "^2.3.2" } } diff --git a/examples/xml-converter/snowpack.config.js b/examples/xml-converter/snowpack.config.js index 00c793b486..0a75b08722 100644 --- a/examples/xml-converter/snowpack.config.js +++ b/examples/xml-converter/snowpack.config.js @@ -4,7 +4,22 @@ module.exports = { public: "/", src: "/_dist_", }, - plugins: ["@snowpack/plugin-typescript", "@snowpack/plugin-webpack"], + plugins: [ + "@snowpack/plugin-typescript", + [ + "@snowpack/plugin-webpack", + { + extendConfig: (config) => { + config.node = { + process: false, + setImmediate: false, + util: "empty", + }; + return config; + }, + }, + ], + ], installOptions: { installTypes: true, }, diff --git a/examples/xml-converter/src/static.d.ts b/examples/xml-converter/src/static.d.ts new file mode 100644 index 0000000000..071978b8c0 --- /dev/null +++ b/examples/xml-converter/src/static.d.ts @@ -0,0 +1,59 @@ +/* Use this file to declare any custom file extensions for importing */ +/* Use this folder to also add/extend a package d.ts file, if needed. */ + +/* CSS MODULES */ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.scss" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.sass" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.less" { + const classes: { [key: string]: string }; + export default classes; +} +declare module "*.module.styl" { + const classes: { [key: string]: string }; + export default classes; +} + +/* CSS */ +declare module "*.css"; +declare module "*.scss"; +declare module "*.sass"; +declare module "*.less"; +declare module "*.styl"; + +/* IMAGES */ +declare module "*.svg" { + const ref: string; + export default ref; +} +declare module "*.bmp" { + const ref: string; + export default ref; +} +declare module "*.gif" { + const ref: string; + export default ref; +} +declare module "*.jpg" { + const ref: string; + export default ref; +} +declare module "*.jpeg" { + const ref: string; + export default ref; +} +declare module "*.png" { + const ref: string; + export default ref; +} + +/* CUSTOM: ADD YOUR OWN HERE */ From 033f934e69b85a87ce889950d483efdfce99693e Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 18:08:02 +0000 Subject: [PATCH 22/71] build: remove parcel dep, update snowpack & webpack deps --- package.json | 4 +- yarn.lock | 1653 +++----------------------------------------------- 2 files changed, 92 insertions(+), 1565 deletions(-) diff --git a/package.json b/package.json index 4c1b29da4b..6ecc114fd0 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "@microsoft/api-extractor": "^7.12.0", "@snowpack/plugin-typescript": "^1.1.1", "@snowpack/plugin-webpack": "^2.1.2", - "@types/snowpack-env": "^2.3.2", "benchmark": "^2.1.4", "file-loader": "^6.2.0", "gzip-size": "^6.0.0", @@ -16,7 +15,6 @@ "lerna": "^3.22.1", "mocha": "^8.2.1", "nyc": "^15.1.0", - "parcel-bundler": "^1.12.4", "rimraf": "^3.0.2", "rollup": "^2.34.1", "rollup-plugin-cleanup": "^3.2.1", @@ -25,7 +23,7 @@ "ts-loader": "^8.0.11", "typescript": "^4.1.2", "webpack": "^4.44.1", - "webpack-cli": "^3.3.11" + "webpack-cli": "^3.3.12" }, "dependencies": { "@ygoe/msgpack": "^1.0.2" diff --git a/yarn.lock b/yarn.lock index 2bf1fd1ae2..588c8c2684 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,15 +9,6 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" - integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" - "@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" @@ -45,7 +36,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.4.4", "@babel/core@^7.7.5": +"@babel/core@^7.7.5": version "7.11.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.4.tgz#4301dfdfafa01eeb97f1896c5501a3f0655d4229" integrity sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg== @@ -67,7 +58,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.11.0", "@babel/generator@^7.11.4", "@babel/generator@^7.4.4": +"@babel/generator@^7.11.0", "@babel/generator@^7.11.4": version "7.11.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.4.tgz#1ec7eec00defba5d6f83e50e3ee72ae2fee482be" integrity sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g== @@ -100,34 +91,6 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-builder-react-jsx-experimental@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz#f35e956a19955ff08c1258e44a515a6d6248646b" - integrity sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/types" "^7.10.5" - -"@babel/helper-builder-react-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" - integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-compilation-targets@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" - integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== - dependencies: - "@babel/compat-data" "^7.10.4" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - "@babel/helper-compilation-targets@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" @@ -138,18 +101,6 @@ browserslist "^4.14.5" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" - integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.5" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/helper-create-class-features-plugin@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" @@ -217,7 +168,7 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": +"@babel/helper-member-expression-to-functions@^7.10.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== @@ -245,7 +196,7 @@ dependencies: "@babel/types" "^7.12.5" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": +"@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== @@ -292,16 +243,6 @@ dependencies: lodash "^4.17.19" -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" - integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helper-remap-async-to-generator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" @@ -346,13 +287,6 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" - integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== - dependencies: - "@babel/types" "^7.11.0" - "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -414,7 +348,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.4", "@babel/parser@^7.4.4": +"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.4": version "7.11.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== @@ -424,15 +358,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg== -"@babel/plugin-proposal-async-generator-functions@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" - integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-proposal-async-generator-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" @@ -442,14 +367,6 @@ "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" - integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-class-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" @@ -458,14 +375,6 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-dynamic-import@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" - integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-proposal-dynamic-import@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" @@ -474,14 +383,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-export-namespace-from@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" - integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-proposal-export-namespace-from@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" @@ -490,14 +391,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-proposal-json-strings@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" @@ -506,14 +399,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" - integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" @@ -522,14 +407,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" - integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" @@ -538,14 +415,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" - integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" @@ -554,15 +423,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" - integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" @@ -572,14 +432,6 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-optional-catch-binding@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-proposal-optional-catch-binding@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" @@ -588,15 +440,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" - integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-proposal-optional-chaining@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" @@ -606,14 +449,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-private-methods@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" - integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-private-methods@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" @@ -622,14 +457,6 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" - integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" @@ -638,6 +465,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-async-generators@^7.8.0": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -645,13 +480,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-class-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" @@ -673,13 +501,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" - integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -687,13 +508,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" - integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -736,13 +550,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-top-level-await@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" @@ -750,13 +557,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-arrow-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" @@ -764,15 +564,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - "@babel/plugin-transform-async-to-generator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" @@ -782,13 +573,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.12.1" -"@babel/plugin-transform-block-scoped-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" @@ -796,13 +580,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.10.4": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" - integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-block-scoping@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" @@ -810,20 +587,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-classes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" - integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - globals "^11.1.0" - "@babel/plugin-transform-classes@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" @@ -838,13 +601,6 @@ "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-computed-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" @@ -852,13 +608,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-destructuring@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" @@ -866,14 +615,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" - integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-dotall-regex@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" @@ -882,11 +623,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.10.4": +"@babel/plugin-transform-dotall-regex@^7.4.4": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-duplicate-keys@^7.12.1": @@ -896,14 +638,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" @@ -912,21 +646,6 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-flow-strip-types@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" - integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.10.4" - -"@babel/plugin-transform-for-of@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-for-of@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" @@ -934,14 +653,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-function-name@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" @@ -950,13 +661,6 @@ "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" @@ -964,13 +668,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-member-expression-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" @@ -978,15 +675,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" - integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== - dependencies: - "@babel/helper-module-transforms" "^7.10.5" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-amd@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" @@ -996,16 +684,6 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.10.4", "@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-commonjs@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" @@ -1016,16 +694,6 @@ "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" - integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== - dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.5" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-systemjs@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" @@ -1037,14 +705,6 @@ "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-modules-umd@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" @@ -1053,13 +713,6 @@ "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" @@ -1067,13 +720,6 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.1" -"@babel/plugin-transform-new-target@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-new-target@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" @@ -1081,14 +727,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" - integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/plugin-transform-object-super@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" @@ -1097,14 +735,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.12.1" -"@babel/plugin-transform-parameters@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" - integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-parameters@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" @@ -1112,13 +742,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" - integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-property-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" @@ -1126,23 +749,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" - integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== - dependencies: - "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" - -"@babel/plugin-transform-regenerator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== - dependencies: - regenerator-transform "^0.14.2" - "@babel/plugin-transform-regenerator@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" @@ -1150,13 +756,6 @@ dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-reserved-words@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" @@ -1164,13 +763,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-shorthand-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" - integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-shorthand-properties@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" @@ -1178,14 +770,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-spread@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" - integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" - "@babel/plugin-transform-spread@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" @@ -1194,14 +778,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - "@babel/plugin-transform-sticky-regex@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" @@ -1209,14 +785,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" - integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-template-literals@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" @@ -1224,13 +792,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typeof-symbol@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typeof-symbol@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" @@ -1238,13 +799,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-escapes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" - integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-unicode-escapes@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" @@ -1252,14 +806,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-unicode-regex@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" @@ -1340,80 +886,6 @@ core-js-compat "^3.7.0" semver "^5.5.0" -"@babel/preset-env@^7.4.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.0.tgz#860ee38f2ce17ad60480c2021ba9689393efb796" - integrity sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg== - dependencies: - "@babel/compat-data" "^7.11.0" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-async-generator-functions" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-dynamic-import" "^7.10.4" - "@babel/plugin-proposal-export-namespace-from" "^7.10.4" - "@babel/plugin-proposal-json-strings" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.11.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.11.0" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@babel/plugin-transform-regenerator" "^7.10.4" - "@babel/plugin-transform-reserved-words" "^7.10.4" - "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.11.0" - "@babel/plugin-transform-sticky-regex" "^7.10.4" - "@babel/plugin-transform-template-literals" "^7.10.4" - "@babel/plugin-transform-typeof-symbol" "^7.10.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.4" - "@babel/plugin-transform-unicode-regex" "^7.10.4" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.11.0" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - "@babel/preset-modules@^0.1.3": version "0.1.4" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" @@ -1425,14 +897,14 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@^7.4.4", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.8.4": version "7.11.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4", "@babel/template@^7.4.4": +"@babel/template@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== @@ -1450,7 +922,7 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" -"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0", "@babel/traverse@^7.4.4": +"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== @@ -1572,11 +1044,6 @@ unique-filename "^1.1.1" which "^1.3.1" -"@iarna/toml@^2.2.0": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -2457,47 +1924,6 @@ dependencies: "@types/node" ">= 8" -"@parcel/fs@^1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-1.11.0.tgz#fb8a2be038c454ad46a50dc0554c1805f13535cd" - integrity sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA== - dependencies: - "@parcel/utils" "^1.11.0" - mkdirp "^0.5.1" - rimraf "^2.6.2" - -"@parcel/logger@^1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-1.11.1.tgz#c55b0744bcbe84ebc291155627f0ec406a23e2e6" - integrity sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA== - dependencies: - "@parcel/workers" "^1.11.0" - chalk "^2.1.0" - grapheme-breaker "^0.3.2" - ora "^2.1.0" - strip-ansi "^4.0.0" - -"@parcel/utils@^1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-1.11.0.tgz#539e08fff8af3b26eca11302be80b522674b51ea" - integrity sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ== - -"@parcel/watcher@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-1.12.1.tgz#b98b3df309fcab93451b5583fc38e40826696dad" - integrity sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA== - dependencies: - "@parcel/utils" "^1.11.0" - chokidar "^2.1.5" - -"@parcel/workers@^1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-1.11.0.tgz#7b8dcf992806f4ad2b6cecf629839c41c2336c59" - integrity sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ== - dependencies: - "@parcel/utils" "^1.11.0" - physical-cpu-count "^2.0.0" - "@rollup/plugin-alias@^3.0.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz#bb96cf37fefeb0a953a6566c284855c7d1cd290c" @@ -2769,11 +2195,6 @@ dependencies: "@types/node" "*" -"@types/snowpack-env@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@types/snowpack-env/-/snowpack-env-2.3.2.tgz#2b7f586ba1de82d1866ecdf9b6792341a7e8d4f4" - integrity sha512-lBChKW/gK0bI5tC+00BqMgOVwJkr+da7+DJasCxgscKgzfJVm7aZgOl84UCDz6tE5bNgo6c8jqQyqW5uxT3KEw== - "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -2956,11 +2377,6 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" - integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== - abab@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -2971,14 +2387,6 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-globals@^4.3.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -2987,17 +2395,12 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.4.1: +acorn@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== @@ -3106,11 +2509,6 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -3126,13 +2524,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-to-html@^0.6.4: - version "0.6.14" - resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.14.tgz#65fe6d08bba5dd9db33f44a20aec331e0010dad8" - integrity sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA== - dependencies: - entities "^1.1.2" - any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -3216,11 +2607,6 @@ array-differ@^2.0.3: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -3306,11 +2692,6 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3358,33 +2739,6 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-runtime@^6.11.6, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-types@^6.15.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon-walk@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/babylon-walk/-/babylon-walk-1.0.2.tgz#3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce" - integrity sha1-OxWl3btIKni0zpwByLoYFwLZ1s4= - dependencies: - babel-runtime "^6.11.6" - babel-types "^6.15.0" - lodash.clone "^4.5.0" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -3506,16 +2860,6 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brfs@^1.2.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" - integrity sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ== - dependencies: - quote-stream "^1.0.1" - resolve "^1.1.5" - static-module "^2.2.0" - through2 "^2.0.0" - brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -3592,7 +2936,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.12.0, browserslist@^4.8.5: +browserslist@^4.0.0: version "4.14.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.0.tgz#2908951abfe4ec98737b72f34c3bcedc8d43b000" integrity sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ== @@ -3618,11 +2962,6 @@ btoa-lite@^1.0.0: resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= -buffer-equal@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" - integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -3883,18 +3222,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3943,7 +3271,7 @@ chokidar@3.4.3, chokidar@^3.4.0: optionalDependencies: fsevents "~2.1.2" -chokidar@^2.1.5, chokidar@^2.1.8: +chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -4041,11 +3369,6 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-spinners@^1.1.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" - integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== - cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -4090,11 +3413,6 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - coa@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" @@ -4182,12 +3500,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -command-exists@^1.2.6: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@^2.7.1: +commander@^2.19.0, commander@^2.20.0, commander@^2.7.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4197,11 +3510,6 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - commander@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" @@ -4237,7 +3545,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@~1.6.0: +concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -4363,7 +3671,7 @@ conventional-recommended-bump@^5.0.0: meow "^4.0.0" q "^1.5.1" -convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -4387,14 +3695,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.6.2: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== - dependencies: - browserslist "^4.8.5" - semver "7.0.0" - core-js-compat@^3.7.0: version "3.8.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.0.tgz#3248c6826f4006793bd637db608bca6e4cd688b1" @@ -4403,11 +3703,6 @@ core-js-compat@^3.7.0: browserslist "^4.14.7" semver "7.0.0" -core-js@^2.4.0, core-js@^2.6.5: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - core-js@^3.5.0: version "3.8.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce" @@ -4470,7 +3765,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^6.0.0, cross-spawn@^6.0.4, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -4538,18 +3833,6 @@ css-loader@^4.3.0: schema-utils "^2.7.1" semver "^7.3.2" -css-modules-loader-core@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" - integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY= - dependencies: - icss-replace-symbols "1.1.0" - postcss "6.0.1" - postcss-modules-extract-imports "1.1.0" - postcss-modules-local-by-default "1.2.0" - postcss-modules-scope "1.1.0" - postcss-modules-values "1.3.0" - css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" @@ -4575,14 +3858,6 @@ css-select@~1.2.0: domutils "1.5.1" nth-check "~1.0.1" -css-selector-tokenizer@^0.7.0: - version "0.7.3" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" - integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== - dependencies: - cssesc "^3.0.0" - fastparse "^1.1.2" - css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" @@ -4672,7 +3947,7 @@ cssnano-util-same-parent@^4.0.0: resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -cssnano@^4.0.0, cssnano@^4.1.10: +cssnano@^4.1.10: version "4.1.10" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== @@ -4689,22 +3964,15 @@ csso@^4.0.2: dependencies: css-tree "1.0.0-alpha.39" -cssom@0.3.x, cssom@^0.3.4, cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -cssstyle@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.2.0: version "2.3.0" @@ -4739,15 +4007,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -4762,21 +4021,6 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -deasync@^0.1.14: - version "0.1.20" - resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.20.tgz#546fd2660688a1eeed55edce2308c5cf7104f9da" - integrity sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ== - dependencies: - bindings "^1.5.0" - node-addon-api "^1.7.1" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -4791,6 +4035,13 @@ debug@4.2.0: dependencies: ms "2.1.2" +debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -4918,11 +4169,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -4936,11 +4182,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -5019,13 +4260,6 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -5078,23 +4312,6 @@ dot-prop@^5.1.0, dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" - integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== - -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - dependencies: - readable-stream "^2.0.2" - duplexer@^0.1.1, duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -5118,11 +4335,6 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - electron-to-chromium@^1.3.523: version "1.3.554" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.554.tgz#11d0619b927a25f300b787ad7ee1ece91384dde9" @@ -5161,11 +4373,6 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - encoding@^0.1.11: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -5189,7 +4396,7 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" -entities@^1.1.1, entities@^1.1.2, entities@~1.1.1: +entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== @@ -5309,22 +4516,17 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - escape-string-regexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.0, escodegen@^1.11.1, escodegen@^1.14.1: +escodegen@^1.14.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -5336,18 +4538,6 @@ escodegen@^1.11.0, escodegen@^1.11.1, escodegen@^1.14.1: optionalDependencies: source-map "~0.6.1" -escodegen@~1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" - integrity sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q== - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - esinstall@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/esinstall/-/esinstall-0.4.0.tgz#b228ed75919b0b87ca0c28ab28f6888d59b92788" @@ -5378,11 +4568,6 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -5420,7 +4605,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@^1.8.1, etag@~1.8.1: +etag@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= @@ -5549,22 +4734,12 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -falafel@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.2.4.tgz#b5d86c060c2412a43166243cb1bce44d1abd2819" - integrity sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ== - dependencies: - acorn "^7.1.1" - foreach "^2.0.5" - isarray "^2.0.1" - object-keys "^1.0.6" - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^2.2.2, fast-glob@^2.2.6: +fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -5586,11 +4761,6 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastparse@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -5616,11 +4786,6 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filesize@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -5727,11 +4892,6 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - foreground-child@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" @@ -5761,11 +4921,6 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -5915,11 +5070,6 @@ get-pkg-repo@^1.0.0: parse-github-repo-url "^1.3.0" through2 "^2.0.0" -get-port@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= - get-port@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" @@ -6114,14 +5264,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -grapheme-breaker@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz#5b9e6b78c3832452d2ba2bb1cb830f96276410ac" - integrity sha1-W55reMODJFLSuiuxy4MPlidkEKw= - dependencies: - brfs "^1.2.0" - unicode-trie "^0.3.1" - growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -6164,18 +5306,6 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -6227,7 +5357,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -6310,13 +5440,6 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -6355,26 +5478,7 @@ html-minifier@^4.0.0: relateurl "^0.2.7" uglify-js "^3.5.1" -html-tags@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-1.2.0.tgz#c78de65b5663aa597989dd2b7ab49200d7e4db98" - integrity sha1-x43mW1Zjqll5id0rerSSANfk25g= - -htmlnano@^0.2.2: - version "0.2.6" - resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.2.6.tgz#d36e39729faa1dd5f8709d8963c67c7502e578b1" - integrity sha512-HUY/99maFsWX2LRoGJpZ/8QRLCkyY0UU1El3wgLLFAHQlD3mCxCJJNcWJk5SBqaU49MLhIWVDW6cGBeuemvaPQ== - dependencies: - cssnano "^4.1.10" - normalize-html-whitespace "^1.0.0" - posthtml "^0.13.1" - posthtml-render "^1.2.2" - purgecss "^2.3.0" - svgo "^1.3.2" - terser "^4.8.0" - uncss "^0.17.3" - -htmlparser2@^3.9.1, htmlparser2@^3.9.2: +htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -6396,17 +5500,6 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" @@ -6485,7 +5578,7 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: +icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= @@ -6588,7 +5681,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6646,13 +5739,6 @@ interpret@^1.0.0, interpret@^1.4.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -6668,11 +5754,6 @@ is-absolute-url@^2.0.0: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= -is-absolute-url@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -6859,13 +5940,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-html@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-html/-/is-html-1.1.0.tgz#e04f1c18d39485111396f9a0273eab51af218464" - integrity sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ= - dependencies: - html-tags "^1.0.0" - is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -6992,11 +6066,6 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-url@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -7024,11 +6093,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" @@ -7140,12 +6204,12 @@ js-cleanup@^1.2.0: perf-regexes "^1.0.1" skip-regex "^1.0.2" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.14.0, js-yaml@^3.10.0, js-yaml@^3.13.1: +js-yaml@3.14.0, js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -7166,38 +6230,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" - integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== - dependencies: - abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" - array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.0" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.1.3" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^2.5.0" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^6.1.2" - xml-name-validator "^3.0.0" - jsdom@^16.2.2: version "16.4.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" @@ -7388,18 +6420,6 @@ lerna@^3.22.1: import-local "^2.0.0" npmlog "^4.1.2" -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -7508,11 +6528,6 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= -lodash.clone@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" - integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= - lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -7585,25 +6600,11 @@ log-symbols@4.0.0: dependencies: chalk "^4.0.0" -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - long@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -7653,13 +6654,6 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg== -magic-string@^0.22.4: - version "0.22.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" - integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== - dependencies: - vlq "^0.2.2" - magic-string@^0.25.3, magic-string@^0.25.5, magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -7826,13 +6820,6 @@ meow@^7.0.0: type-fest "^0.13.1" yargs-parser "^18.1.3" -merge-source-map@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" - integrity sha1-pd5GU42uhNQRTMXqArR3KmNGcB8= - dependencies: - source-map "^0.5.6" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -7895,11 +6882,6 @@ mime-types@^2.1.12, mime-types@^2.1.26, mime-types@~2.1.19: dependencies: mime-db "1.44.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -8120,11 +7102,6 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - ms@2.1.2, ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -8216,11 +7193,6 @@ no-case@^3.0.3: lower-case "^2.0.1" tslib "^1.10.0" -node-addon-api@^1.7.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - node-fetch-npm@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" @@ -8235,11 +7207,6 @@ node-fetch@^2.3.0, node-fetch@^2.5.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-forge@^0.7.1: - version "0.7.6" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" - integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== - node-gyp@^5.0.2: version "5.1.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" @@ -8257,7 +7224,7 @@ node-gyp@^5.0.2: tar "^4.4.12" which "^1.3.1" -node-libs-browser@^2.0.0, node-libs-browser@^2.2.1: +node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -8311,11 +7278,6 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-html-whitespace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz#5e3c8e192f1b06c3b9eee4b7e7f28854c7601e34" - integrity sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA== - normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -8438,7 +7400,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.1.3, nwsapi@^2.2.0: +nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== @@ -8505,12 +7467,7 @@ object-inspect@^1.8.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== -object-inspect@~1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" - integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -8582,13 +7539,6 @@ octokit-pagination-methods@^1.1.0: resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -8618,13 +7568,6 @@ open@^7.0.4: is-docker "^2.0.0" is-wsl "^2.1.1" -opn@^5.1.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - optimize-css-assets-webpack-plugin@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" @@ -8645,18 +7588,6 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -ora@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b" - integrity sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA== - dependencies: - chalk "^2.3.1" - cli-cursor "^2.1.0" - cli-spinners "^1.1.0" - log-symbols "^2.2.0" - strip-ansi "^4.0.0" - wcwidth "^1.0.1" - os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -8832,11 +7763,6 @@ package-hash@^4.0.0: lodash.flattendeep "^4.4.0" release-zalgo "^1.0.0" -pako@^0.2.5: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= - pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -8866,71 +7792,6 @@ param-case@^3.0.3: dot-case "^3.0.3" tslib "^1.10.0" -parcel-bundler@^1.12.4: - version "1.12.4" - resolved "https://registry.yarnpkg.com/parcel-bundler/-/parcel-bundler-1.12.4.tgz#31223f4ab4d00323a109fce28d5e46775409a9ee" - integrity sha512-G+iZGGiPEXcRzw0fiRxWYCKxdt/F7l9a0xkiU4XbcVRJCSlBnioWEwJMutOCCpoQmaQtjB4RBHDGIHN85AIhLQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.4.4" - "@babel/generator" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/plugin-transform-flow-strip-types" "^7.4.4" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/preset-env" "^7.4.4" - "@babel/runtime" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - "@iarna/toml" "^2.2.0" - "@parcel/fs" "^1.11.0" - "@parcel/logger" "^1.11.1" - "@parcel/utils" "^1.11.0" - "@parcel/watcher" "^1.12.1" - "@parcel/workers" "^1.11.0" - ansi-to-html "^0.6.4" - babylon-walk "^1.0.2" - browserslist "^4.1.0" - chalk "^2.1.0" - clone "^2.1.1" - command-exists "^1.2.6" - commander "^2.11.0" - core-js "^2.6.5" - cross-spawn "^6.0.4" - css-modules-loader-core "^1.1.0" - cssnano "^4.0.0" - deasync "^0.1.14" - dotenv "^5.0.0" - dotenv-expand "^5.1.0" - envinfo "^7.3.1" - fast-glob "^2.2.2" - filesize "^3.6.0" - get-port "^3.2.0" - htmlnano "^0.2.2" - is-glob "^4.0.0" - is-url "^1.2.2" - js-yaml "^3.10.0" - json5 "^1.0.1" - micromatch "^3.0.4" - mkdirp "^0.5.1" - node-forge "^0.7.1" - node-libs-browser "^2.0.0" - opn "^5.1.0" - postcss "^7.0.11" - postcss-value-parser "^3.3.1" - posthtml "^0.11.2" - posthtml-parser "^0.4.0" - posthtml-render "^1.1.3" - resolve "^1.4.0" - semver "^5.4.1" - serialize-to-js "^3.0.0" - serve-static "^1.12.4" - source-map "0.6.1" - terser "^3.7.3" - v8-compile-cache "^2.0.0" - ws "^5.1.1" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -9002,11 +7863,6 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - parse5@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" @@ -9019,11 +7875,6 @@ parse5@^3.0.1: dependencies: "@types/node" "*" -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - pascal-case@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" @@ -9131,11 +7982,6 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -physical-cpu-count@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" - integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= - picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -9187,11 +8033,6 @@ platform@^1.3.3: resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -9315,13 +8156,6 @@ postcss-minify-selectors@^4.0.2: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -postcss-modules-extract-imports@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" - integrity sha1-thTJcgvmgW6u41+zpfqh26agXds= - dependencies: - postcss "^6.0.1" - postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -9329,14 +8163,6 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - postcss-modules-local-by-default@^3.0.2, postcss-modules-local-by-default@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" @@ -9347,14 +8173,6 @@ postcss-modules-local-by-default@^3.0.2, postcss-modules-local-by-default@^3.0.3 postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - postcss-modules-scope@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" @@ -9363,14 +8181,6 @@ postcss-modules-scope@^2.2.0: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-values@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - postcss-modules-values@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" @@ -9504,15 +8314,6 @@ postcss-reduce-transforms@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-selector-parser@6.0.2, postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - postcss-selector-parser@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" @@ -9532,6 +8333,15 @@ postcss-selector-parser@^6.0.0: uniq "^1.0.1" util-deprecate "^1.0.2" +postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-svgo@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" @@ -9551,7 +8361,7 @@ postcss-unique-selectors@^4.0.1: postcss "^7.0.0" uniqs "^2.0.0" -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: +postcss-value-parser@^3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -9561,16 +8371,7 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" - integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I= - dependencies: - chalk "^1.1.3" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@7.0.32, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.17, postcss@^7.0.27: +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27: version "7.0.32" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== @@ -9579,15 +8380,6 @@ postcss@7.0.32, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.17 source-map "^0.6.1" supports-color "^6.1.0" -postcss@^6.0.1: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" @@ -9606,41 +8398,6 @@ postcss@^8.1.8: nanoid "^3.1.20" source-map "^0.6.1" -posthtml-parser@^0.4.0, posthtml-parser@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.2.tgz#a132bbdf0cd4bc199d34f322f5c1599385d7c6c1" - integrity sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg== - dependencies: - htmlparser2 "^3.9.2" - -posthtml-parser@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.5.0.tgz#571058a3b63c1704964ffc25bbe69ffda213244e" - integrity sha512-BsZFAqOeX9lkJJPKG2JmGgtm6t++WibU7FeS40FNNGZ1KS2szRSRQ8Wr2JLvikDgAecrQ/9V4sjugTAin2+KVw== - dependencies: - htmlparser2 "^3.9.2" - -posthtml-render@^1.1.3, posthtml-render@^1.1.5, posthtml-render@^1.2.2, posthtml-render@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.2.3.tgz#da1cf7ba4efb42cfe9c077f4f41669745de99b6d" - integrity sha512-rGGayND//VwTlsYKNqdILsA7U/XP0WJa6SMcdAEoqc2WRM5QExplGg/h9qbTuHz7mc2PvaXU+6iNxItvr5aHMg== - -posthtml@^0.11.2: - version "0.11.6" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.11.6.tgz#e349d51af7929d0683b9d8c3abd8166beecc90a8" - integrity sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw== - dependencies: - posthtml-parser "^0.4.1" - posthtml-render "^1.1.5" - -posthtml@^0.13.1: - version "0.13.3" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.13.3.tgz#9702d745108d532a9d5808985e0dafd81b09f7bd" - integrity sha512-5NL2bBc4ihAyoYnY0EAQrFQbJNE1UdvgC1wjYts0hph7jYeU2fa5ki3/9U45ce9V6M1vLMEgUX2NXe/bYL+bCQ== - dependencies: - posthtml-parser "^0.5.0" - posthtml-render "^1.2.3" - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -9767,16 +8524,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -purgecss@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-2.3.0.tgz#5327587abf5795e6541517af8b190a6fb5488bb3" - integrity sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ== - dependencies: - commander "^5.0.0" - glob "^7.0.0" - postcss "7.0.32" - postcss-selector-parser "^6.0.2" - q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -9812,15 +8559,6 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -quote-stream@^1.0.1, quote-stream@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" - integrity sha1-hJY/jJwmuULhU/7rU6rnRlK34LI= - dependencies: - buffer-equal "0.0.1" - minimist "^1.1.3" - through2 "^2.0.0" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -9836,11 +8574,6 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - read-cmd-shim@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" @@ -9927,7 +8660,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -10025,11 +8758,6 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" @@ -10127,7 +8855,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.5, request-promise-native@^1.0.8: +request-promise-native@^1.0.8: version "1.0.9" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== @@ -10217,7 +8945,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.5, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@~1.17.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -10373,13 +9101,6 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - saxes@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -10434,25 +9155,6 @@ semver@^7.3.2, semver@~7.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - serialize-javascript@5.0.1, serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -10467,21 +9169,6 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -serialize-to-js@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/serialize-to-js/-/serialize-to-js-3.1.1.tgz#b3e77d0568ee4a60bfe66287f991e104d3a1a4ac" - integrity sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA== - -serve-static@^1.12.4: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -10502,11 +9189,6 @@ setimmediate@^1.0.4: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -10522,11 +9204,6 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shallow-copy@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" - integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -10728,7 +9405,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.17, source-map-support@~0.5.10, source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@^0.5.17, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -10741,16 +9418,16 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" @@ -10859,13 +9536,6 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -static-eval@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.1.0.tgz#a16dbe54522d7fa5ef1389129d813fd47b148014" - integrity sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw== - dependencies: - escodegen "^1.11.1" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -10874,31 +9544,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -static-module@^2.2.0: - version "2.2.5" - resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf" - integrity sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ== - dependencies: - concat-stream "~1.6.0" - convert-source-map "^1.5.1" - duplexer2 "~0.1.4" - escodegen "~1.9.0" - falafel "^2.1.0" - has "^1.0.1" - magic-string "^0.22.4" - merge-source-map "1.0.4" - object-inspect "~1.4.0" - quote-stream "~1.0.2" - readable-stream "~2.3.3" - shallow-copy "~0.0.1" - static-eval "^2.0.0" - through2 "~2.0.3" - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -11120,19 +9765,7 @@ supports-color@7.2.0, supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -11146,7 +9779,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -svgo@^1.0.0, svgo@^1.3.2: +svgo@^1.0.0: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== @@ -11165,7 +9798,7 @@ svgo@^1.0.0, svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-tree@^3.2.2, symbol-tree@^3.2.4: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -11247,16 +9880,7 @@ terser-webpack-plugin@^4.0.0: terser "^5.3.4" webpack-sources "^1.4.3" -terser@^3.7.3: - version "3.17.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" - integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== - dependencies: - commander "^2.19.0" - source-map "~0.6.1" - source-map-support "~0.5.10" - -terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: +terser@^4.1.2, terser@^4.6.3: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -11302,7 +9926,7 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -through2@^2.0.0, through2@^2.0.2, through2@~2.0.3: +through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -11335,11 +9959,6 @@ timsort@^0.3.0, timsort@~0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -tiny-inflate@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" - integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -11352,11 +9971,6 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -11394,12 +10008,7 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -11585,21 +10194,6 @@ umask@^1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -uncss@^0.17.3: - version "0.17.3" - resolved "https://registry.yarnpkg.com/uncss/-/uncss-0.17.3.tgz#50fc1eb4ed573ffff763458d801cd86e4d69ea11" - integrity sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog== - dependencies: - commander "^2.20.0" - glob "^7.1.4" - is-absolute-url "^3.0.1" - is-html "^1.1.0" - jsdom "^14.1.0" - lodash "^4.17.15" - postcss "^7.0.17" - postcss-selector-parser "6.0.2" - request "^2.88.0" - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -11623,14 +10217,6 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -unicode-trie@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" - integrity sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU= - dependencies: - pako "^0.2.5" - tiny-inflate "^1.0.0" - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -11776,10 +10362,10 @@ uuid@^3.0.1, uuid@^3.3.2, uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@^2.0.0, v8-compile-cache@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +v8-compile-cache@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" @@ -11815,11 +10401,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vlq@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== - vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -11830,22 +10411,13 @@ vm2@^3.9.2: resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.2.tgz#a4085d2d88a808a1b3c06d5478c2db3222a9cc30" integrity sha512-nzyFmHdy2FMg7mYraRytc2jr4QBaUY3TEGe3q3bK8EgS9WC98wxn2jrPxS/ruWm+JGzrEIIeufKweQzVoQEd+Q== -w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - w3c-xmlserializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" @@ -11871,7 +10443,7 @@ watchpack@^1.7.4: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.0" -wcwidth@^1.0.0, wcwidth@^1.0.1: +wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= @@ -11893,7 +10465,7 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-cli@^3.3.11: +webpack-cli@^3.3.12: version "3.3.12" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== @@ -11928,7 +10500,7 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.43.0: +webpack@^4.43.0, webpack@^4.44.1: version "4.44.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== @@ -11957,43 +10529,14 @@ webpack@^4.43.0: watchpack "^1.7.4" webpack-sources "^1.4.1" -webpack@^4.44.1: - version "4.44.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" - integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== @@ -12145,20 +10688,6 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" -ws@^5.1.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - ws@^7.2.3, ws@^7.3.0: version "7.4.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" @@ -12169,7 +10698,7 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.1.1, xmlchars@^2.2.0: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== From ae51c01e5be7fb5e150b59cca941c54cc6113273 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 18:44:00 +0000 Subject: [PATCH 23/71] build(examples): update webworker examples (snowpack) --- examples/mandelbrot/package.json | 14 ++++------- examples/mandelbrot/presets.md | 10 ++++++++ examples/mandelbrot/{ => public}/index.html | 2 +- examples/mandelbrot/src/index.ts | 6 ----- examples/mandelbrot/tsconfig.json | 12 ++++------ examples/mandelbrot/tsconfig.worker.json | 12 ++++++++++ examples/mandelbrot/webpack.config.js | 23 ------------------- examples/mandelbrot/webpack.worker.js | 14 +++++++++-- examples/shader-ast-workers/package.json | 14 ++++------- .../{ => public}/index.html | 2 +- examples/shader-ast-workers/src/index.ts | 8 +------ examples/shader-ast-workers/tsconfig.json | 13 ++++------- .../shader-ast-workers/tsconfig.worker.json | 12 ++++++++++ examples/shader-ast-workers/webpack.config.js | 23 ------------------- .../webpack.worker.config.js | 23 ------------------- 15 files changed, 67 insertions(+), 121 deletions(-) create mode 100644 examples/mandelbrot/presets.md rename examples/mandelbrot/{ => public}/index.html (90%) create mode 100644 examples/mandelbrot/tsconfig.worker.json delete mode 100644 examples/mandelbrot/webpack.config.js rename examples/shader-ast-workers/{ => public}/index.html (93%) create mode 100644 examples/shader-ast-workers/tsconfig.worker.json delete mode 100644 examples/shader-ast-workers/webpack.config.js delete mode 100644 examples/shader-ast-workers/webpack.worker.config.js diff --git a/examples/mandelbrot/package.json b/examples/mandelbrot/package.json index 5955c4b8b5..ad5c04d1b2 100644 --- a/examples/mandelbrot/package.json +++ b/examples/mandelbrot/package.json @@ -6,16 +6,10 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && yarn build:worker && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report", - "build:worker": "../../node_modules/.bin/webpack --config webpack.worker.js --mode production", - "build:webpack": "yarn build:worker && ../../node_modules/.bin/webpack --mode production", - "start": "yarn build:worker && parcel index.html -d out -p 8080 --open" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "yarn build:worker && ../../node_modules/.bin/snowpack dev", + "build": "yarn build:worker && ../../node_modules/.bin/snowpack build", + "build:worker": "../../node_modules/.bin/webpack --config webpack.worker.js --mode production" }, "dependencies": { "@thi.ng/compose": "latest", diff --git a/examples/mandelbrot/presets.md b/examples/mandelbrot/presets.md new file mode 100644 index 0000000000..49dd3184df --- /dev/null +++ b/examples/mandelbrot/presets.md @@ -0,0 +1,10 @@ +https://demo.thi.ng/umbrella/mandelbrot/#-5.61419758e-1;6.43037295e-1;-5.61375745e-1;6.43081308e-1;393 +https://demo.thi.ng/umbrella/mandelbrot/#2.32309162e-1;5.33944731e-1;2.33688159e-1;5.35323728e-1;284 +https://demo.thi.ng/umbrella/mandelbrot/#-2.21069336e-1;6.48425782e-1;-2.11669922e-1;6.57602050e-1;320 +https://demo.thi.ng/umbrella/mandelbrot/#2.82117920e-1;-1.37133789e-2;2.86918945e-1;-8.91235352e-3;420 +https://demo.thi.ng/umbrella/mandelbrot/#2.85553654e-1;-1.21380424e-2;2.86618881e-1;-1.10728149e-2;622 +https://demo.thi.ng/umbrella/mandelbrot/#2.86301940e-1;-1.16972577e-2;2.86310366e-1;-1.16888316e-2;760 +https://demo.thi.ng/umbrella/mandelbrot/#-1.47730469e+0;-5.58593750e-3;-1.47387695e+0;-2.15820313e-3;128 +https://demo.thi.ng/umbrella/mandelbrot/#-1.47538194e+0;-3.46502686e-3;-1.47474995e+0;-2.83303730e-3;160 +https://demo.thi.ng/umbrella/mandelbrot/#-1.47499188e+0;-3.11150770e-3;-1.47497510e+0;-3.09472048e-3;224 +https://demo.thi.ng/umbrella/mandelbrot/#3.35639648e-1;-5.04687500e-1;3.37836914e-1;-5.02490234e-1;88 \ No newline at end of file diff --git a/examples/mandelbrot/index.html b/examples/mandelbrot/public/index.html similarity index 90% rename from examples/mandelbrot/index.html rename to examples/mandelbrot/public/index.html index e60dd33c81..dc2e15b623 100644 --- a/examples/mandelbrot/index.html +++ b/examples/mandelbrot/public/index.html @@ -20,6 +20,6 @@
- + diff --git a/examples/mandelbrot/src/index.ts b/examples/mandelbrot/src/index.ts index f9e944d576..ac1a7d94c8 100644 --- a/examples/mandelbrot/src/index.ts +++ b/examples/mandelbrot/src/index.ts @@ -295,9 +295,3 @@ newRender.apply( : DEFAULT_CONFIG) ) ); - -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => main.done()); -} diff --git a/examples/mandelbrot/tsconfig.json b/examples/mandelbrot/tsconfig.json index 41f786f571..48d558b4f8 100644 --- a/examples/mandelbrot/tsconfig.json +++ b/examples/mandelbrot/tsconfig.json @@ -1,10 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/mandelbrot/tsconfig.worker.json b/examples/mandelbrot/tsconfig.worker.json new file mode 100644 index 0000000000..450f917c17 --- /dev/null +++ b/examples/mandelbrot/tsconfig.worker.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": ".", + "module": "es2020", + "target": "es2017", + "sourceMap": false, + "declarationMap": false, + "declaration": false + }, + "include": ["./src/**/*.ts"] +} diff --git a/examples/mandelbrot/webpack.config.js b/examples/mandelbrot/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/mandelbrot/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/mandelbrot/webpack.worker.js b/examples/mandelbrot/webpack.worker.js index cafb437b4d..9ec791aec9 100644 --- a/examples/mandelbrot/webpack.worker.js +++ b/examples/mandelbrot/webpack.worker.js @@ -2,7 +2,7 @@ module.exports = { entry: "./src/worker.ts", output: { filename: "worker.js", - path: __dirname + "/out", + path: __dirname + "/public", }, resolve: { extensions: [".ts", ".js"], @@ -14,7 +14,17 @@ module.exports = { loader: "file-loader", options: { name: "[path][hash].[ext]" }, }, - { test: /\.ts$/, use: "ts-loader" }, + { + test: /\.ts$/, + use: [ + { + loader: "ts-loader", + options: { + configFile: "tsconfig.worker.json", + }, + }, + ], + }, ], }, node: { diff --git a/examples/shader-ast-workers/package.json b/examples/shader-ast-workers/package.json index b58374a4da..4e118235fb 100644 --- a/examples/shader-ast-workers/package.json +++ b/examples/shader-ast-workers/package.json @@ -6,16 +6,10 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && yarn build:worker && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting", - "build:worker": "../../node_modules/.bin/webpack --mode production --config webpack.worker.config.js", - "build:webpack": "yarn build:worker && ../../node_modules/.bin/webpack --mode production", - "start": "yarn build:worker && parcel index.html -d out -p 8080 --open" - }, - "devDependencies": { - "parcel-bundler": "^1.12.3", - "terser": "^3.17.0", - "typescript": "^4.1.2" + "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", + "start": "yarn build:worker && ../../node_modules/.bin/snowpack dev", + "build": "yarn build:worker && ../../node_modules/.bin/snowpack build", + "build:worker": "../../node_modules/.bin/webpack --config webpack.worker.js --mode production" }, "dependencies": { "@thi.ng/api": "latest", diff --git a/examples/shader-ast-workers/index.html b/examples/shader-ast-workers/public/index.html similarity index 93% rename from examples/shader-ast-workers/index.html rename to examples/shader-ast-workers/public/index.html index d5e1bbb25a..9ba0c4bd21 100644 --- a/examples/shader-ast-workers/index.html +++ b/examples/shader-ast-workers/public/index.html @@ -26,6 +26,6 @@ >Source code - + diff --git a/examples/shader-ast-workers/src/index.ts b/examples/shader-ast-workers/src/index.ts index ba1ee50ff3..8dcde1cc92 100644 --- a/examples/shader-ast-workers/src/index.ts +++ b/examples/shader-ast-workers/src/index.ts @@ -25,7 +25,7 @@ forkJoin({ // this function is called for each worker ID to define a region of // the image to compute. the results of that function are the messages // sent to the workers... - fork: (id, numWorkers, time) => ({ + fork: (id, _, time) => ({ width: W, height: H, y1: id * rowsPerSlice, @@ -66,9 +66,3 @@ const drawStats = (parts: WorkerResult[]) => { } } }; - -// HMR handling -if (process.env.NODE_ENV !== "production") { - const hot = (module).hot; - hot && hot.dispose(() => time.done()); -} diff --git a/examples/shader-ast-workers/tsconfig.json b/examples/shader-ast-workers/tsconfig.json index 4fee6fa2b0..48d558b4f8 100644 --- a/examples/shader-ast-workers/tsconfig.json +++ b/examples/shader-ast-workers/tsconfig.json @@ -1,11 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../tsconfig.json", + "include": ["src"], "compilerOptions": { - "outDir": ".", - "target": "es2017", - "sourceMap": true, - "noUnusedLocals": false, - "noUnusedParameters": false - }, - "include": ["./src/**/*.ts"] + "baseUrl": "./", + "paths": { "*": ["web_modules/.types/*"] } + } } diff --git a/examples/shader-ast-workers/tsconfig.worker.json b/examples/shader-ast-workers/tsconfig.worker.json new file mode 100644 index 0000000000..450f917c17 --- /dev/null +++ b/examples/shader-ast-workers/tsconfig.worker.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": ".", + "module": "es2020", + "target": "es2017", + "sourceMap": false, + "declarationMap": false, + "declaration": false + }, + "include": ["./src/**/*.ts"] +} diff --git a/examples/shader-ast-workers/webpack.config.js b/examples/shader-ast-workers/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/shader-ast-workers/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; diff --git a/examples/shader-ast-workers/webpack.worker.config.js b/examples/shader-ast-workers/webpack.worker.config.js deleted file mode 100644 index 0ab6ab9b84..0000000000 --- a/examples/shader-ast-workers/webpack.worker.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/worker.ts", - output: { - filename: "worker.js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; From ed528f239cefbf040b1932c4869df8313e3b2a8d Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 18:46:12 +0000 Subject: [PATCH 24/71] chore(examples): remove obsolete hmr-basics --- examples/hmr-basics/.gitignore | 5 ---- examples/hmr-basics/README.md | 19 -------------- examples/hmr-basics/index.html | 25 ------------------- examples/hmr-basics/package.json | 32 ------------------------ examples/hmr-basics/src/app.ts | 36 --------------------------- examples/hmr-basics/src/index.ts | 26 ------------------- examples/hmr-basics/src/state.ts | 15 ----------- examples/hmr-basics/tsconfig.json | 10 -------- examples/hmr-basics/webpack.config.js | 23 ----------------- 9 files changed, 191 deletions(-) delete mode 100644 examples/hmr-basics/.gitignore delete mode 100644 examples/hmr-basics/README.md delete mode 100644 examples/hmr-basics/index.html delete mode 100644 examples/hmr-basics/package.json delete mode 100644 examples/hmr-basics/src/app.ts delete mode 100644 examples/hmr-basics/src/index.ts delete mode 100644 examples/hmr-basics/src/state.ts delete mode 100644 examples/hmr-basics/tsconfig.json delete mode 100644 examples/hmr-basics/webpack.config.js diff --git a/examples/hmr-basics/.gitignore b/examples/hmr-basics/.gitignore deleted file mode 100644 index 0c5abcab62..0000000000 --- a/examples/hmr-basics/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.cache -out -node_modules -yarn.lock -*.js diff --git a/examples/hmr-basics/README.md b/examples/hmr-basics/README.md deleted file mode 100644 index 949a068ed2..0000000000 --- a/examples/hmr-basics/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# hmr-basics - -[Live demo](http://demo.thi.ng/umbrella/hmr-basics/) - -Minimal example demonstrating the combined usage of @thi.ng/memoize's -[`defonce`](https://github.com/thi-ng/umbrella/tree/develop/packages/memoize/src/defonce.ts) -and parcel's [Hot Module Replacement API](https://parceljs.org/hmr.html). - -Please refer to the [example build -instructions](https://github.com/thi-ng/umbrella/wiki/Example-build-instructions) -on the wiki. - -## Authors - -- Karsten Schmidt - -## License - -© 2018 Karsten Schmidt // Apache Software License 2.0 diff --git a/examples/hmr-basics/index.html b/examples/hmr-basics/index.html deleted file mode 100644 index 916fd94eed..0000000000 --- a/examples/hmr-basics/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - hmr-basics - - - - - - -
- - - diff --git a/examples/hmr-basics/package.json b/examples/hmr-basics/package.json deleted file mode 100644 index 5314631033..0000000000 --- a/examples/hmr-basics/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "hmr-basics", - "description": "hdom & hot module replacement", - "version": "0.0.1", - "repository": "https://github.com/thi-ng/umbrella", - "author": "Karsten Schmidt ", - "license": "Apache-2.0", - "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html -d out --no-source-maps --no-cache --experimental-scope-hoisting --detailed-report --public-url ./", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open --no-cache" - }, - "devDependencies": { - "parcel-bundler": "^1.12.4", - "terser": "^5.2.1", - "typescript": "^4.1.2" - }, - "dependencies": { - "@thi.ng/atom": "latest", - "@thi.ng/memoize": "latest", - "@thi.ng/rstream": "latest", - "@thi.ng/transducers": "latest", - "@thi.ng/transducers-hdom": "latest" - }, - "browserslist": [ - "last 3 Chrome versions" - ], - "browser": { - "process": false - } -} diff --git a/examples/hmr-basics/src/app.ts b/examples/hmr-basics/src/app.ts deleted file mode 100644 index a9123b8cdc..0000000000 --- a/examples/hmr-basics/src/app.ts +++ /dev/null @@ -1,36 +0,0 @@ -// edit this file after launching the dev server (`yarn start`) -// to see hot module replacement in action: -// the `state.launched` and `state.seed` values should remain constant -// when this module is being replaced via HMR - -// root component function -export const app = ({ now, state }: any) => [ - "div.pa2.sans-serif.f6.bg-light-yellow", - ["h1.pa0.ma0.bb", "State"], - [ - "ul.ma0.pv3.bb", - [item, "Now:", now], - [item, "Launched at:", state.launched], - [item, "Seed:", state.seed], - ], - [ - "div.mt3", - "Edit ", - [repoLink, "src/app.ts"], - " to see hot module replacement in action.", - ], -]; - -const item = (_: any, label: string, value: any) => [ - "li", - ["span.dib.b.w4", label], - value, -]; - -const repoLink = (_: any, file: string) => [ - "a.pa1.link.black.bg-light-gray", - { - href: `https://github.com/thi-ng/umbrella/tree/develop/examples/hmr-basics/${file}`, - }, - file, -]; diff --git a/examples/hmr-basics/src/index.ts b/examples/hmr-basics/src/index.ts deleted file mode 100644 index 0d692ea28e..0000000000 --- a/examples/hmr-basics/src/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { fromAtom, fromInterval, sync } from "@thi.ng/rstream"; -import { map } from "@thi.ng/transducers"; -import { updateDOM } from "@thi.ng/transducers-hdom"; -import { app } from "./app"; -import { state } from "./state"; - -// combine streams of atom values & timer -const ui = sync({ - src: { - state: fromAtom(state), - now: fromInterval(1000).transform(map((_) => new Date())), - }, -}); -// then transform using root component function -// and hdom differential DOM updater -ui.transform(map(app), updateDOM()); - -// HMR handling -const hot = (module).hot; -if (hot) { - // terminate existing UI stream before applying updated module - hot.dispose(() => ui.unsubscribe()); - // accept hot updates for app.ts & self - hot.accept("./app.ts"); - hot.accept(); -} diff --git a/examples/hmr-basics/src/state.ts b/examples/hmr-basics/src/state.ts deleted file mode 100644 index a41ea7c0b3..0000000000 --- a/examples/hmr-basics/src/state.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Atom } from "@thi.ng/atom"; -import { defonce } from "@thi.ng/memoize"; - -// `defonce` is used here to protect the app stat atom from -// re-initializing during hot module replacement. -// in other words, the atom is *only* initialized once when the -// application first loads / reloads -export const state = defonce( - "umbrella.example.hmr", - () => - new Atom({ - launched: new Date(), - seed: (Math.random() * 100) | 0, - }) -); diff --git a/examples/hmr-basics/tsconfig.json b/examples/hmr-basics/tsconfig.json deleted file mode 100644 index 41f786f571..0000000000 --- a/examples/hmr-basics/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": ".", - "module": "es2020", - "target": "es2017", - "sourceMap": true - }, - "include": ["./src/**/*.ts"] -} diff --git a/examples/hmr-basics/webpack.config.js b/examples/hmr-basics/webpack.config.js deleted file mode 100644 index bf16021356..0000000000 --- a/examples/hmr-basics/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - entry: "./src/index.ts", - output: { - filename: "bundle.[hash].js", - path: __dirname + "/out" - }, - resolve: { - extensions: [".ts", ".js"] - }, - module: { - rules: [ - { - test: /\.(png|jpg|gif)$/, - loader: "file-loader", - options: { name: "[path][hash].[ext]" } - }, - { test: /\.ts$/, use: "ts-loader" } - ] - }, - node: { - process: false - } -}; From 158838061ae487944eb18c6de57fd44b9e45316e Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 18:49:11 +0000 Subject: [PATCH 25/71] chore(examples): remove obsolete pkg files --- examples/search/package.json | 27 ------------------- examples/text-canvas-tables/package.json | 33 ------------------------ 2 files changed, 60 deletions(-) delete mode 100644 examples/search/package.json delete mode 100644 examples/text-canvas-tables/package.json diff --git a/examples/search/package.json b/examples/search/package.json deleted file mode 100644 index c69484f950..0000000000 --- a/examples/search/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "search", - "version": "0.0.1", - "description": "TODO", - "repository": "https://github.com/thi-ng/umbrella", - "author": "Karsten Schmidt ", - "license": "Apache-2.0", - "scripts": { - "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", - "start": "../../node_modules/.bin/snowpack dev", - "build": "../../node_modules/.bin/snowpack build" - }, - "dependencies": { - "@thi.ng/api": "latest", - "@thi.ng/rstream": "latest", - "@thi.ng/transducers-hdom": "latest" - }, - "browserslist": [ - "last 3 Chrome versions" - ], - "browser": { - "process": false - }, - "thi.ng": { - "skip": true - } -} diff --git a/examples/text-canvas-tables/package.json b/examples/text-canvas-tables/package.json deleted file mode 100644 index a89f103352..0000000000 --- a/examples/text-canvas-tables/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "text-canvas-tables", - "version": "0.0.1", - "description": "TODO", - "repository": "https://github.com/thi-ng/umbrella", - "author": "Karsten Schmidt ", - "license": "Apache-2.0", - "scripts": { - "clean": "rm -rf .cache build out", - "build": "yarn clean && parcel build index.html --no-source-maps --no-cache", - "build:webpack": "../../node_modules/.bin/webpack --mode production", - "start": "parcel index.html -p 8080 --open" - }, - "devDependencies": { - "parcel": "^2.0.0-nightly.193", - "terser": "^5.2.1", - "typescript": "^4.1.2" - }, - "dependencies": { - "@thi.ng/api": "latest", - "@thi.ng/rstream": "latest", - "@thi.ng/transducers-hdom": "latest" - }, - "browserslist": [ - "last 3 Chrome versions" - ], - "browser": { - "process": false - }, - "thi.ng": { - "skip": true - } -} From 5b8c5a0b1f779e7c5df75f982e32dff60cc41053 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 18:56:07 +0000 Subject: [PATCH 26/71] chore(examples): minor update pkg meta --- examples/commit-table-ssr/package.json | 1 - examples/package-stats/package.json | 1 - 2 files changed, 2 deletions(-) diff --git a/examples/commit-table-ssr/package.json b/examples/commit-table-ssr/package.json index 419583bba8..9a08353cf6 100644 --- a/examples/commit-table-ssr/package.json +++ b/examples/commit-table-ssr/package.json @@ -34,7 +34,6 @@ "process": false }, "thi.ng": { - "skip": true, "readme": [ "cache", "hiccup", diff --git a/examples/package-stats/package.json b/examples/package-stats/package.json index c38f935fa1..ac41156fc1 100644 --- a/examples/package-stats/package.json +++ b/examples/package-stats/package.json @@ -31,7 +31,6 @@ "process": false }, "thi.ng": { - "skip": true, "online": false, "readme": [ "dgraph", From 925203f000492d2169fba5323f6c4779be366e6f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 18:56:42 +0000 Subject: [PATCH 27/71] docs(examples): update readme list --- examples/README.md | 123 ++++++++++++++++++++++----------------------- 1 file changed, 61 insertions(+), 62 deletions(-) diff --git a/examples/README.md b/examples/README.md index dd08570b5e..2a979f8ed6 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,7 +1,7 @@ # @thi.ng/umbrella examples -This directory contains a growing number (currently 99) of standalone +This directory contains a growing number (currently 98) of standalone example projects, including live online versions, build instructions and commented source code. @@ -48,65 +48,64 @@ in touch via PR, issue tracker, email or twitter! | 036 | | [hdom-toggle](./hdom-toggle/) | Customizable slide toggle component demo | | 037 | | [hdom-vscroller](./hdom-vscroller/) | Virtual scroller component for large tables / lists | | 038 | | [hiccup-canvas-arcs](./hiccup-canvas-arcs/) | Animated arcs & drawing using hiccup-canvas | -| 039 | | [hmr-basics](./hmr-basics/) | hdom & hot module replacement | -| 040 | | [hydrate-basics](./hydrate-basics/) | Hiccup / hdom DOM hydration example | -| 041 | | [imgui](./imgui/) | Canvas based Immediate Mode GUI components | -| 042 | | [imgui-basics](./imgui-basics/) | Minimal IMGUI usage example | -| 043 | | [interceptor-basics](./interceptor-basics/) | Event handling w/ interceptors and side effects | -| 044 | | [interceptor-basics2](./interceptor-basics2/) | Event handling w/ interceptors and side effects | -| 045 | | [iso-plasma](./iso-plasma/) | Animated sine plasma effect visualized using contour lines | -| 046 | | [json-components](./json-components/) | Transforming JSON into UI components | -| 047 | | [login-form](./login-form/) | Basic SPA example with atom-based UI router | -| 048 | | [mandelbrot](./mandelbrot/) | Worker based, interactive Mandelbrot visualization | -| 049 | | [markdown](./markdown/) | Minimal Markdown to Hiccup to HTML parser / transformer | -| 050 | | [multitouch](./multitouch/) | Basic rstream-gestures multi-touch demo | -| 051 | | [package-stats](./package-stats/) | CLI util to visualize umbrella pkg stats | -| 052 | | [parse-playground](./parse-playground/) | Parser grammar livecoding editor/playground & codegen | -| 053 | | [pixel-basics](./pixel-basics/) | Pixel buffer manipulations | -| 054 | | [pointfree-svg](./pointfree-svg/) | Generate SVG using pointfree DSL | -| 055 | | [poisson-circles](./poisson-circles/) | 2D Poisson-disc sampler with procedural gradient map | -| 056 | | [poly-spline](./poly-spline/) | Polygon to cubic curve conversion & visualization | -| 057 | | [porter-duff](./porter-duff/) | Port-Duff image compositing / alpha blending | -| 058 | | [ramp-synth](./ramp-synth/) | Unison wavetable synth with waveform editor | -| 059 | | [rdom-basics](./rdom-basics/) | Demonstates various rdom usage patterns | -| 060 | | [rdom-dnd](./rdom-dnd/) | rdom drag & drop example | -| 061 | | [rdom-lissajous](./rdom-lissajous/) | rdom & hiccup-canvas interop test | -| 062 | | [rdom-search-docs](./rdom-search-docs/) | Full umbrella repo doc string search w/ paginated results | -| 063 | | [rdom-svg-nodes](./rdom-svg-nodes/) | rdom powered SVG graph with draggable nodes | -| 064 | | [rotating-voronoi](./rotating-voronoi/) | Animated Voronoi diagram, cubic splines & SVG download | -| 065 | | [router-basics](./router-basics/) | Complete mini SPA app w/ router & async content loading | -| 066 | | [rstream-dataflow](./rstream-dataflow/) | Minimal rstream dataflow graph | -| 067 | | [rstream-event-loop](./rstream-event-loop/) | Minimal demo of using rstream constructs to form an interceptor-style event loop | -| 068 | | [rstream-grid](./rstream-grid/) | Interactive grid generator, SVG generation & export, undo/redo support | -| 069 | | [rstream-hdom](./rstream-hdom/) | rstream based UI updates & state handling | -| 070 | | [rstream-spreadsheet](./rstream-spreadsheet/) | rstream based spreadsheet w/ S-expression formula DSL | -| 071 | | [scenegraph](./scenegraph/) | 2D scenegraph & shape picking | -| 072 | | [scenegraph-image](./scenegraph-image/) | 2D scenegraph & image map based geometry manipulation | -| 073 | | [shader-ast-canvas2d](./shader-ast-canvas2d/) | 2D canvas shader emulation | -| 074 | | [shader-ast-evo](./shader-ast-evo/) | Evolutionary shader generation using genetic programming | -| 075 | | [shader-ast-noise](./shader-ast-noise/) | HOF shader procedural noise function composition | -| 076 | | [shader-ast-raymarch](./shader-ast-raymarch/) | WebGL & JS canvas2D raymarch shader cross-compilation | -| 077 | | [shader-ast-sdf2d](./shader-ast-sdf2d/) | WebGL & JS canvas 2D SDF | -| 078 | | [shader-ast-tunnel](./shader-ast-tunnel/) | WebGL & Canvas2D textured tunnel shader | -| 079 | | [shader-ast-workers](./shader-ast-workers/) | Fork-join worker-based raymarch renderer | -| 080 | | [shader-graph](./shader-graph/) | Minimal shader graph developed during livestream #2 | -| 081 | | [soa-ecs](./soa-ecs/) | Entity Component System w/ 100k 3D particles | -| 082 | | [stratified-grid](./stratified-grid/) | 2D Stratified grid sampling example | -| 083 | | [svg-barchart](./svg-barchart/) | Simplistic SVG bar chart component | -| 084 | | [svg-particles](./svg-particles/) | Basic 2D particle system w/ SVG shapes | -| 085 | | [svg-waveform](./svg-waveform/) | Additive waveform synthesis & SVG visualization with undo/redo | -| 086 | | [talk-slides](./talk-slides/) | hdom based slide deck viewer & slides from my ClojureX 2018 keynote | -| 087 | | [text-canvas](./text-canvas/) | 3D wireframe textmode demo | -| 088 | | [todo-list](./todo-list/) | Obligatory to-do list example with undo/redo | -| 089 | | [transducers-hdom](./transducers-hdom/) | Transducer & rstream based hdom UI updates | -| 090 | | [triple-query](./triple-query/) | Triple store query results & sortable table | -| 091 | | [webgl-cube](./webgl-cube/) | WebGL multi-colored cube mesh | -| 092 | | [webgl-cubemap](./webgl-cubemap/) | WebGL cube maps with async texture loading | -| 093 | | [webgl-grid](./webgl-grid/) | WebGL instancing, animated grid | -| 094 | | [webgl-msdf](./webgl-msdf/) | WebGL MSDF text rendering & particle system | -| 095 | | [webgl-multipass](./webgl-multipass/) | Minimal multi-pass / GPGPU example | -| 096 | | [webgl-shadertoy](./webgl-shadertoy/) | Shadertoy-like WebGL setup | -| 097 | | [webgl-ssao](./webgl-ssao/) | WebGL screenspace ambient occlusion | -| 098 | | [wolfram](./wolfram/) | 1D Wolfram automata with OBJ point cloud export | -| 099 | | [xml-converter](./xml-converter/) | XML/HTML/SVG to hiccup/JS conversion | +| 039 | | [hydrate-basics](./hydrate-basics/) | Hiccup / hdom DOM hydration example | +| 040 | | [imgui](./imgui/) | Canvas based Immediate Mode GUI components | +| 041 | | [imgui-basics](./imgui-basics/) | Minimal IMGUI usage example | +| 042 | | [interceptor-basics](./interceptor-basics/) | Event handling w/ interceptors and side effects | +| 043 | | [interceptor-basics2](./interceptor-basics2/) | Event handling w/ interceptors and side effects | +| 044 | | [iso-plasma](./iso-plasma/) | Animated sine plasma effect visualized using contour lines | +| 045 | | [json-components](./json-components/) | Transforming JSON into UI components | +| 046 | | [login-form](./login-form/) | Basic SPA example with atom-based UI router | +| 047 | | [mandelbrot](./mandelbrot/) | Worker based, interactive Mandelbrot visualization | +| 048 | | [markdown](./markdown/) | Minimal Markdown to Hiccup to HTML parser / transformer | +| 049 | | [multitouch](./multitouch/) | Basic rstream-gestures multi-touch demo | +| 050 | | [package-stats](./package-stats/) | CLI util to visualize umbrella pkg stats | +| 051 | | [parse-playground](./parse-playground/) | Parser grammar livecoding editor/playground & codegen | +| 052 | | [pixel-basics](./pixel-basics/) | Pixel buffer manipulations | +| 053 | | [pointfree-svg](./pointfree-svg/) | Generate SVG using pointfree DSL | +| 054 | | [poisson-circles](./poisson-circles/) | 2D Poisson-disc sampler with procedural gradient map | +| 055 | | [poly-spline](./poly-spline/) | Polygon to cubic curve conversion & visualization | +| 056 | | [porter-duff](./porter-duff/) | Port-Duff image compositing / alpha blending | +| 057 | | [ramp-synth](./ramp-synth/) | Unison wavetable synth with waveform editor | +| 058 | | [rdom-basics](./rdom-basics/) | Demonstates various rdom usage patterns | +| 059 | | [rdom-dnd](./rdom-dnd/) | rdom drag & drop example | +| 060 | | [rdom-lissajous](./rdom-lissajous/) | rdom & hiccup-canvas interop test | +| 061 | | [rdom-search-docs](./rdom-search-docs/) | Full umbrella repo doc string search w/ paginated results | +| 062 | | [rdom-svg-nodes](./rdom-svg-nodes/) | rdom powered SVG graph with draggable nodes | +| 063 | | [rotating-voronoi](./rotating-voronoi/) | Animated Voronoi diagram, cubic splines & SVG download | +| 064 | | [router-basics](./router-basics/) | Complete mini SPA app w/ router & async content loading | +| 065 | | [rstream-dataflow](./rstream-dataflow/) | Minimal rstream dataflow graph | +| 066 | | [rstream-event-loop](./rstream-event-loop/) | Minimal demo of using rstream constructs to form an interceptor-style event loop | +| 067 | | [rstream-grid](./rstream-grid/) | Interactive grid generator, SVG generation & export, undo/redo support | +| 068 | | [rstream-hdom](./rstream-hdom/) | rstream based UI updates & state handling | +| 069 | | [rstream-spreadsheet](./rstream-spreadsheet/) | rstream based spreadsheet w/ S-expression formula DSL | +| 070 | | [scenegraph](./scenegraph/) | 2D scenegraph & shape picking | +| 071 | | [scenegraph-image](./scenegraph-image/) | 2D scenegraph & image map based geometry manipulation | +| 072 | | [shader-ast-canvas2d](./shader-ast-canvas2d/) | 2D canvas shader emulation | +| 073 | | [shader-ast-evo](./shader-ast-evo/) | Evolutionary shader generation using genetic programming | +| 074 | | [shader-ast-noise](./shader-ast-noise/) | HOF shader procedural noise function composition | +| 075 | | [shader-ast-raymarch](./shader-ast-raymarch/) | WebGL & JS canvas2D raymarch shader cross-compilation | +| 076 | | [shader-ast-sdf2d](./shader-ast-sdf2d/) | WebGL & JS canvas 2D SDF | +| 077 | | [shader-ast-tunnel](./shader-ast-tunnel/) | WebGL & Canvas2D textured tunnel shader | +| 078 | | [shader-ast-workers](./shader-ast-workers/) | Fork-join worker-based raymarch renderer | +| 079 | | [shader-graph](./shader-graph/) | Minimal shader graph developed during livestream #2 | +| 080 | | [soa-ecs](./soa-ecs/) | Entity Component System w/ 100k 3D particles | +| 081 | | [stratified-grid](./stratified-grid/) | 2D Stratified grid sampling example | +| 082 | | [svg-barchart](./svg-barchart/) | Simplistic SVG bar chart component | +| 083 | | [svg-particles](./svg-particles/) | Basic 2D particle system w/ SVG shapes | +| 084 | | [svg-waveform](./svg-waveform/) | Additive waveform synthesis & SVG visualization with undo/redo | +| 085 | | [talk-slides](./talk-slides/) | hdom based slide deck viewer & slides from my ClojureX 2018 keynote | +| 086 | | [text-canvas](./text-canvas/) | 3D wireframe textmode demo | +| 087 | | [todo-list](./todo-list/) | Obligatory to-do list example with undo/redo | +| 088 | | [transducers-hdom](./transducers-hdom/) | Transducer & rstream based hdom UI updates | +| 089 | | [triple-query](./triple-query/) | Triple store query results & sortable table | +| 090 | | [webgl-cube](./webgl-cube/) | WebGL multi-colored cube mesh | +| 091 | | [webgl-cubemap](./webgl-cubemap/) | WebGL cube maps with async texture loading | +| 092 | | [webgl-grid](./webgl-grid/) | WebGL instancing, animated grid | +| 093 | | [webgl-msdf](./webgl-msdf/) | WebGL MSDF text rendering & particle system | +| 094 | | [webgl-multipass](./webgl-multipass/) | Minimal multi-pass / GPGPU example | +| 095 | | [webgl-shadertoy](./webgl-shadertoy/) | Shadertoy-like WebGL setup | +| 096 | | [webgl-ssao](./webgl-ssao/) | WebGL screenspace ambient occlusion | +| 097 | | [wolfram](./wolfram/) | 1D Wolfram automata with OBJ point cloud export | +| 098 | | [xml-converter](./xml-converter/) | XML/HTML/SVG to hiccup/JS conversion | From 754505f13743db1d6f8daa89b9c385a3e9368ef2 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 18:57:29 +0000 Subject: [PATCH 28/71] build(examples): re-add build:cli script --- examples/xml-converter/package.json | 3 ++- examples/xml-converter/tsconfig-cli.json | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/examples/xml-converter/package.json b/examples/xml-converter/package.json index 87bca487a0..3010cc8163 100644 --- a/examples/xml-converter/package.json +++ b/examples/xml-converter/package.json @@ -8,7 +8,8 @@ "scripts": { "clean": "../../node_modules/.bin/rimraf build node_modules/.cache", "start": "../../node_modules/.bin/snowpack dev", - "build": "../../node_modules/.bin/snowpack build" + "build": "../../node_modules/.bin/snowpack build", + "build:cli": "../../node_modules/.bin/tsc -p tsconfig-cli.json" }, "dependencies": { "@thi.ng/arrays": "latest", diff --git a/examples/xml-converter/tsconfig-cli.json b/examples/xml-converter/tsconfig-cli.json index 8471f0aa29..230b2ebd90 100644 --- a/examples/xml-converter/tsconfig-cli.json +++ b/examples/xml-converter/tsconfig-cli.json @@ -3,9 +3,10 @@ "compilerOptions": { "outDir": "bin", "target": "es6", - "module": "commonjs" + "module": "commonjs", + "declaration": false, + "declarationMap": false, + "sourceMap": false }, - "include": [ - "./src/**/*.ts" - ] -} \ No newline at end of file + "include": ["./src/**/*.ts"] +} From e9825872d2628a409e185a5456659ae7a5127fe4 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 20:40:09 +0000 Subject: [PATCH 29/71] build: enforce type-only imports in all packages --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index 4b4f7d5a8a..32105abeb5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,6 +8,7 @@ "importHelpers": true, "noUnusedParameters": true, "noUnusedLocals": true, + "importsNotUsedAsValues": "error", "preserveConstEnums": true, "moduleResolution": "node", "strict": true, From b8243b9ce65235f140ab750511997d0dd27c278b Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:24:21 +0000 Subject: [PATCH 30/71] refactor(adjacency): update type-only imports --- packages/adjacency/src/binary.ts | 2 +- packages/adjacency/src/mst.ts | 2 +- packages/adjacency/src/sparse.ts | 5 ++--- packages/adjacency/test/binary.ts | 2 +- packages/adjacency/test/mst.ts | 4 ++-- packages/adjacency/test/sparse.ts | 2 +- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/adjacency/src/binary.ts b/packages/adjacency/src/binary.ts index 3281576df6..a500828d9d 100644 --- a/packages/adjacency/src/binary.ts +++ b/packages/adjacency/src/binary.ts @@ -1,6 +1,6 @@ +import type { Pair } from "@thi.ng/api"; import { popCount } from "@thi.ng/binary"; import { BitMatrix } from "@thi.ng/bitfield"; -import type { Pair } from "@thi.ng/api"; import type { IGraph } from "./api"; export class AdjacencyBitMatrix implements IGraph { diff --git a/packages/adjacency/src/mst.ts b/packages/adjacency/src/mst.ts index c3ef4591a1..1de139c8d8 100644 --- a/packages/adjacency/src/mst.ts +++ b/packages/adjacency/src/mst.ts @@ -1,5 +1,5 @@ -import { DisjointSet } from "./disjoint-set"; import type { Fn } from "@thi.ng/api"; +import { DisjointSet } from "./disjoint-set"; /** * Computes the Minimum Spanning Tree from given weighted `edges`, using diff --git a/packages/adjacency/src/sparse.ts b/packages/adjacency/src/sparse.ts index 3e8e40ef01..209109a3b7 100644 --- a/packages/adjacency/src/sparse.ts +++ b/packages/adjacency/src/sparse.ts @@ -1,7 +1,6 @@ -import { CSR } from "@thi.ng/sparse"; -import { DegreeType } from "./api"; -import type { IGraph } from "./api"; import type { Pair } from "@thi.ng/api"; +import { CSR } from "@thi.ng/sparse"; +import { DegreeType, IGraph } from "./api"; export class AdjacencyMatrix extends CSR implements IGraph { static newEmpty(n: number, undirected = false) { diff --git a/packages/adjacency/test/binary.ts b/packages/adjacency/test/binary.ts index a02a861430..cd3b8ce000 100644 --- a/packages/adjacency/test/binary.ts +++ b/packages/adjacency/test/binary.ts @@ -1,6 +1,6 @@ import type { Pair } from "@thi.ng/api"; import * as assert from "assert"; -import { AdjacencyBitMatrix } from "../src/index"; +import { AdjacencyBitMatrix } from "../src"; const edges: Pair[] = [ [2, 3], diff --git a/packages/adjacency/test/mst.ts b/packages/adjacency/test/mst.ts index ff85610596..6b0bbde07e 100644 --- a/packages/adjacency/test/mst.ts +++ b/packages/adjacency/test/mst.ts @@ -1,6 +1,6 @@ -import { distSq, comparator2 } from "@thi.ng/vectors"; +import { comparator2, distSq } from "@thi.ng/vectors"; import * as assert from "assert"; -import { mst } from "../src/mst"; +import { mst } from "../src"; describe("unionfind", () => { it("mst", () => { diff --git a/packages/adjacency/test/sparse.ts b/packages/adjacency/test/sparse.ts index 997104009e..a566ca7d90 100644 --- a/packages/adjacency/test/sparse.ts +++ b/packages/adjacency/test/sparse.ts @@ -1,6 +1,6 @@ import type { Pair } from "@thi.ng/api"; -import { AdjacencyMatrix } from "../src/index"; import * as assert from "assert"; +import { AdjacencyMatrix } from "../src"; const edges: Pair[] = [ [2, 3], From 94be931af855a9997de1de15e0c1a50da530fd2a Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:26:29 +0000 Subject: [PATCH 31/71] refactor(api): update type-only imports --- packages/api/src/api/path.ts | 4 ++-- packages/api/src/logger.ts | 2 +- packages/api/src/mixins/ienable.ts | 4 ++-- packages/api/src/mixins/inotify.ts | 4 ++-- packages/api/src/mixins/iwatch.ts | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/api/src/api/path.ts b/packages/api/src/api/path.ts index 02acaa8a5f..7fc59f981f 100644 --- a/packages/api/src/api/path.ts +++ b/packages/api/src/api/path.ts @@ -1,4 +1,4 @@ -import { NumOrString } from "./prim"; +import type { NumOrString } from "./prim"; import type { Keys, Keys1, @@ -10,7 +10,7 @@ import type { Keys7, ValN, } from "./keyval"; -import { Head, Tail, IsEmpty } from "./tuple"; +import type { Head, Tail, IsEmpty } from "./tuple"; /** * Unchecked lookup path for nested data structures. diff --git a/packages/api/src/logger.ts b/packages/api/src/logger.ts index a389bee89b..7b9a28bd07 100644 --- a/packages/api/src/logger.ts +++ b/packages/api/src/logger.ts @@ -1,5 +1,5 @@ -import { LogLevel } from "./api/logger"; import type { ILogger } from "./api/logger"; +import { LogLevel } from "./api/logger"; export const NULL_LOGGER: ILogger = Object.freeze({ level: LogLevel.NONE, diff --git a/packages/api/src/mixins/ienable.ts b/packages/api/src/mixins/ienable.ts index 80743ce5cb..1d6eaa0469 100644 --- a/packages/api/src/mixins/ienable.ts +++ b/packages/api/src/mixins/ienable.ts @@ -1,5 +1,5 @@ -import { IEnable } from "../api/enable"; -import { Event } from "../api/event"; +import type { IEnable } from "../api/enable"; +import type { Event } from "../api/event"; import { EVENT_DISABLE, EVENT_ENABLE } from "../constants"; import { mixin } from "../mixin"; diff --git a/packages/api/src/mixins/inotify.ts b/packages/api/src/mixins/inotify.ts index ac990c7884..9518882107 100644 --- a/packages/api/src/mixins/inotify.ts +++ b/packages/api/src/mixins/inotify.ts @@ -1,5 +1,5 @@ -import { Event, INotify, Listener } from "../api/event"; -import { IObjectOf } from "../api/object"; +import type { Event, INotify, Listener } from "../api/event"; +import type { IObjectOf } from "../api/object"; import { EVENT_ALL } from "../constants"; import { mixin } from "../mixin"; diff --git a/packages/api/src/mixins/iwatch.ts b/packages/api/src/mixins/iwatch.ts index 3b6933a837..ac2e324783 100644 --- a/packages/api/src/mixins/iwatch.ts +++ b/packages/api/src/mixins/iwatch.ts @@ -1,5 +1,5 @@ -import { IObjectOf } from "../api/object"; -import { IWatch, Watch } from "../api/watch"; +import type { IObjectOf } from "../api/object"; +import type { IWatch, Watch } from "../api/watch"; import { mixin } from "../mixin"; interface _IWatch extends IWatch { From 6e5a78d7c969af5bd08d4d920ec589b502709b05 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:27:15 +0000 Subject: [PATCH 32/71] test(associative): update type-only imports --- packages/associative/test/difference.ts | 3 +-- packages/associative/test/intersection.ts | 3 +-- packages/associative/test/join.ts | 4 +--- packages/associative/test/multi-trie.ts | 3 +-- packages/associative/test/sorted-map.ts | 2 +- packages/associative/test/trie-map.ts | 3 +-- packages/associative/test/union.ts | 3 +-- 7 files changed, 7 insertions(+), 14 deletions(-) diff --git a/packages/associative/test/difference.ts b/packages/associative/test/difference.ts index 6809e28da7..f44876916e 100644 --- a/packages/associative/test/difference.ts +++ b/packages/associative/test/difference.ts @@ -1,7 +1,6 @@ import { equiv } from "@thi.ng/equiv"; import * as assert from "assert"; -import { ArraySet } from "../src/array-set"; -import { difference } from "../src/difference"; +import { ArraySet, difference } from "../src"; describe("difference", () => { it("native (numbers)", () => { diff --git a/packages/associative/test/intersection.ts b/packages/associative/test/intersection.ts index 48378169e3..7e3a08013a 100644 --- a/packages/associative/test/intersection.ts +++ b/packages/associative/test/intersection.ts @@ -1,6 +1,5 @@ import * as assert from "assert"; -import { ArraySet } from "../src/array-set"; -import { intersection } from "../src/intersection"; +import { ArraySet, intersection } from "../src"; describe("intersection", () => { it("native (numbers)", () => { diff --git a/packages/associative/test/join.ts b/packages/associative/test/join.ts index 7dcc94be3a..64cf75b264 100644 --- a/packages/associative/test/join.ts +++ b/packages/associative/test/join.ts @@ -1,7 +1,5 @@ import * as assert from "assert"; - -import { ArraySet } from "../src/array-set"; -import { join, joinWith } from "../src/join"; +import { ArraySet, join, joinWith } from "../src"; describe("join", () => { it("simple", () => { diff --git a/packages/associative/test/multi-trie.ts b/packages/associative/test/multi-trie.ts index 77c2e5d4c6..77def704aa 100644 --- a/packages/associative/test/multi-trie.ts +++ b/packages/associative/test/multi-trie.ts @@ -1,6 +1,5 @@ import * as assert from "assert"; - -import { MultiTrie } from "../src/multi-trie"; +import { MultiTrie } from "../src"; describe("MultiTrie", () => { let root: MultiTrie; diff --git a/packages/associative/test/sorted-map.ts b/packages/associative/test/sorted-map.ts index 55e3d176dc..6566c4fcc8 100644 --- a/packages/associative/test/sorted-map.ts +++ b/packages/associative/test/sorted-map.ts @@ -2,7 +2,7 @@ import { shuffle } from "@thi.ng/arrays"; import { equiv } from "@thi.ng/equiv"; import { range, repeat, zip } from "@thi.ng/transducers"; import * as assert from "assert"; -import { defSortedMap, SortedMap } from "../src/sorted-map"; +import { defSortedMap, SortedMap } from "../src"; describe("SortedMap", () => { let m: SortedMap; diff --git a/packages/associative/test/trie-map.ts b/packages/associative/test/trie-map.ts index e14300278c..b104e54ff0 100644 --- a/packages/associative/test/trie-map.ts +++ b/packages/associative/test/trie-map.ts @@ -1,6 +1,5 @@ import * as assert from "assert"; - -import { TrieMap } from "../src/trie-map"; +import { TrieMap } from "../src"; describe("TrieMap", () => { let root: TrieMap; diff --git a/packages/associative/test/union.ts b/packages/associative/test/union.ts index 604e85a1af..fdf9c24666 100644 --- a/packages/associative/test/union.ts +++ b/packages/associative/test/union.ts @@ -1,6 +1,5 @@ import * as assert from "assert"; -import { ArraySet } from "../src/array-set"; -import { union } from "../src/union"; +import { ArraySet, union } from "../src"; describe("union", () => { it("native (numbers)", () => { From f1cee057a12e474caed81d41be42b52dd2389a2e Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:27:48 +0000 Subject: [PATCH 33/71] refactor(atom): update type-only imports --- packages/atom/test/atom.ts | 2 +- packages/atom/test/cursor.ts | 2 +- packages/atom/test/history.ts | 4 +--- packages/atom/test/transacted.ts | 2 +- packages/atom/test/view.ts | 5 +---- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/atom/test/atom.ts b/packages/atom/test/atom.ts index 8a3f668831..60f2fdf011 100644 --- a/packages/atom/test/atom.ts +++ b/packages/atom/test/atom.ts @@ -1,6 +1,6 @@ import { isNumber } from "@thi.ng/checks"; import * as assert from "assert"; -import { Atom } from "../src/index"; +import { Atom } from "../src"; describe("atom", function () { let a: Atom; diff --git a/packages/atom/test/cursor.ts b/packages/atom/test/cursor.ts index 9c9db5a73d..8026c92eae 100644 --- a/packages/atom/test/cursor.ts +++ b/packages/atom/test/cursor.ts @@ -1,6 +1,6 @@ import { isNumber } from "@thi.ng/checks"; import * as assert from "assert"; -import { Atom, Cursor, defAtom, defCursor } from "../src/index"; +import { Atom, Cursor, defAtom, defCursor } from "../src"; interface State { a: { diff --git a/packages/atom/test/history.ts b/packages/atom/test/history.ts index a93026e22b..29142237d9 100644 --- a/packages/atom/test/history.ts +++ b/packages/atom/test/history.ts @@ -1,7 +1,5 @@ import * as assert from "assert"; -import { Atom } from "../src/atom"; -import { defCursor } from "../src/cursor"; -import { defHistory } from "../src/history"; +import { Atom, defCursor, defHistory } from "../src"; describe("history", () => { let a: Atom; diff --git a/packages/atom/test/transacted.ts b/packages/atom/test/transacted.ts index e4ab053c07..12b3dc52b5 100644 --- a/packages/atom/test/transacted.ts +++ b/packages/atom/test/transacted.ts @@ -6,7 +6,7 @@ import { defTransacted, defView, Transacted, -} from "../src/index"; +} from "../src"; interface State { a: number; diff --git a/packages/atom/test/view.ts b/packages/atom/test/view.ts index 0dc8726511..4aac88d8ad 100644 --- a/packages/atom/test/view.ts +++ b/packages/atom/test/view.ts @@ -1,8 +1,5 @@ import * as assert from "assert"; -import { IView } from "../src/api"; -import { Atom } from "../src/atom"; -import { defCursor } from "../src/cursor"; -import { defView, View } from "../src/view"; +import { Atom, defCursor, defView, IView, View } from "../src"; interface State { a: number; From e6c8d98eee9abdf2ef67cee537ca5077d4530f47 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:28:42 +0000 Subject: [PATCH 34/71] refactor(bench): update type-only imports --- packages/bench/src/bench.ts | 2 +- packages/bench/src/benchmark.ts | 2 +- packages/bench/src/timed.ts | 2 +- packages/bench/test/index.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/bench/src/bench.ts b/packages/bench/src/bench.ts index 4ca97165c1..4ef7b39575 100644 --- a/packages/bench/src/bench.ts +++ b/packages/bench/src/bench.ts @@ -1,5 +1,5 @@ -import { timed, timedResult } from "./timed"; import type { TimingResult } from "./api"; +import { timed, timedResult } from "./timed"; /** * Executes given function `n` times, prints elapsed time to console and diff --git a/packages/bench/src/benchmark.ts b/packages/bench/src/benchmark.ts index 34a909bb9d..b15e0e069d 100644 --- a/packages/bench/src/benchmark.ts +++ b/packages/bench/src/benchmark.ts @@ -1,6 +1,6 @@ +import type { BenchmarkOpts, BenchmarkResult } from "./api"; import { benchResult } from "./bench"; import { timedResult } from "./timed"; -import type { BenchmarkOpts, BenchmarkResult } from "./api"; export const benchmark = ( fn: () => void, diff --git a/packages/bench/src/timed.ts b/packages/bench/src/timed.ts index b07827d909..d84753d321 100644 --- a/packages/bench/src/timed.ts +++ b/packages/bench/src/timed.ts @@ -1,5 +1,5 @@ -import { now } from "./now"; import type { TimingResult } from "./api"; +import { now } from "./now"; /** * Calls function `fn` without args, prints elapsed time and returns diff --git a/packages/bench/test/index.ts b/packages/bench/test/index.ts index 150b002db2..a92651cc2c 100644 --- a/packages/bench/test/index.ts +++ b/packages/bench/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as bench from "../src/index"; +// import * as bench from "../src"; describe("bench", () => { it("tests pending"); From ad267a28eef6fbfb986e58258b5ea9f4cec0cf81 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:40:04 +0000 Subject: [PATCH 35/71] refactor(bencode): update type-only imports --- packages/bencode/test/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bencode/test/index.ts b/packages/bencode/test/index.ts index 773ccdd9ad..888139c66d 100644 --- a/packages/bencode/test/index.ts +++ b/packages/bencode/test/index.ts @@ -1,6 +1,6 @@ import { equiv } from "@thi.ng/equiv"; import * as assert from "assert"; -import { decode, encode } from "../src/index"; +import { decode, encode } from "../src"; const src = { foo: [1, "a", { bar: "baz" }, [42.123]] }; const src2 = { foo: new Uint8Array([0, 1, 2, 3, 255, 254, 253]) }; From 7eaab0af6316f506b22810fb745cf7329f6ee823 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:40:21 +0000 Subject: [PATCH 36/71] refactor(binary): update type-only imports --- packages/binary/test/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/binary/test/index.ts b/packages/binary/test/index.ts index 9d0e8ad0f9..326ba0b45e 100644 --- a/packages/binary/test/index.ts +++ b/packages/binary/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as b from "../src/index"; +// import * as b from "../src"; describe("binary", () => { it("tests pending"); From d5c5bd58ec25e4a4182b4e23952dc83b921283d0 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:40:42 +0000 Subject: [PATCH 37/71] refactor(bitfield): update type-only imports --- packages/bitfield/test/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bitfield/test/index.ts b/packages/bitfield/test/index.ts index be422ff418..65197f0d73 100644 --- a/packages/bitfield/test/index.ts +++ b/packages/bitfield/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as b from "../src/index"; +// import * as b from "../src"; describe("bitfield", () => { it("tests pending"); From 53c9e4a740fb1999fabc50b2575f63aeb1051459 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:41:18 +0000 Subject: [PATCH 38/71] refactor(bitstream): update type-only imports --- packages/bitstream/test/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bitstream/test/index.ts b/packages/bitstream/test/index.ts index 796618a7f8..631e026868 100644 --- a/packages/bitstream/test/index.ts +++ b/packages/bitstream/test/index.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import * as bits from "../src/index"; +import * as bits from "../src"; describe("BitInputStream", function () { let src = new Uint8Array([ From 78d3deef2a089e62c351a5e16c890ffb86c3be98 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:41:58 +0000 Subject: [PATCH 39/71] refactor(cache): update type-only imports --- packages/cache/src/tlru.ts | 2 +- packages/cache/test/lru.ts | 2 +- packages/cache/test/mru.ts | 2 +- packages/cache/test/tlru.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/cache/src/tlru.ts b/packages/cache/src/tlru.ts index f10efc09a3..0d4f82e6b8 100644 --- a/packages/cache/src/tlru.ts +++ b/packages/cache/src/tlru.ts @@ -1,5 +1,5 @@ import type { Fn0 } from "@thi.ng/api"; -import { ConsCell, DCons } from "@thi.ng/dcons"; +import type { ConsCell, DCons } from "@thi.ng/dcons"; import type { CacheEntry, CacheOpts } from "./api"; import { LRUCache } from "./lru"; diff --git a/packages/cache/test/lru.ts b/packages/cache/test/lru.ts index 42767b3b69..f2faaa8ee8 100644 --- a/packages/cache/test/lru.ts +++ b/packages/cache/test/lru.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { LRUCache } from "../src/index"; +import { LRUCache } from "../src"; describe("LRU", () => { let c: LRUCache; diff --git a/packages/cache/test/mru.ts b/packages/cache/test/mru.ts index 7a69f50051..0abb92605a 100644 --- a/packages/cache/test/mru.ts +++ b/packages/cache/test/mru.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { MRUCache } from "../src/index"; +import { MRUCache } from "../src"; describe("MRU", () => { let c: MRUCache; diff --git a/packages/cache/test/tlru.ts b/packages/cache/test/tlru.ts index 921e6892ee..08f93b1b5c 100644 --- a/packages/cache/test/tlru.ts +++ b/packages/cache/test/tlru.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { TLRUCache } from "../src/index"; +import { TLRUCache } from "../src"; describe("TLRU", () => { let c: TLRUCache; From 094a575ff0ff04534c15ae92bb078cfb0e705aba Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:44:11 +0000 Subject: [PATCH 40/71] refactor(checks): update imports --- packages/checks/test/index.ts | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/checks/test/index.ts b/packages/checks/test/index.ts index c05f58de51..4270d2d127 100644 --- a/packages/checks/test/index.ts +++ b/packages/checks/test/index.ts @@ -1,18 +1,20 @@ import * as assert from "assert"; import * as vm from "vm"; -import { existsAndNotNull } from "../src/exists-not-null"; -import { implementsFunction } from "../src/implements-function"; -import { isArray } from "../src/is-array"; -import { isArrayLike } from "../src/is-arraylike"; -import { isFunction } from "../src/is-function"; -import { isObject } from "../src/is-object"; -import { isPlainObject } from "../src/is-plain-object"; -import { isString } from "../src/is-string"; -import { isSymbol } from "../src/is-symbol"; -import { isTransferable } from "../src/is-transferable"; -import { isTypedArray } from "../src/is-typedarray"; -import { isNil } from "../src/is-nil"; -import { isHexColor } from "../src/is-hex-color"; +import { + existsAndNotNull, + implementsFunction, + isArray, + isArrayLike, + isFunction, + isHexColor, + isNil, + isObject, + isPlainObject, + isString, + isSymbol, + isTransferable, + isTypedArray, +} from "../src"; describe("checks", function () { it("existsAndNotNull", () => { From 2808adfc39c3e32149d45701d864cd5a2ad927aa Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:44:41 +0000 Subject: [PATCH 41/71] refactor(color): update type-only imports --- packages/color/src/api.ts | 2 +- packages/color/src/closest-hue.ts | 2 +- packages/color/src/hue-rgba.ts | 2 +- packages/color/src/internal/acolor.ts | 2 +- packages/color/test/index.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/color/src/api.ts b/packages/color/src/api.ts index 633fb00662..3e16ba0b00 100644 --- a/packages/color/src/api.ts +++ b/packages/color/src/api.ts @@ -1,6 +1,6 @@ import type { Tuple } from "@thi.ng/api"; import type { ReadonlyVec, Vec } from "@thi.ng/vectors"; -import { ColorMode } from "./constants"; +import type { ColorMode } from "./constants"; export type Color = Vec; export type ReadonlyColor = ReadonlyVec; diff --git a/packages/color/src/closest-hue.ts b/packages/color/src/closest-hue.ts index 29e89e1677..997cdeecbb 100644 --- a/packages/color/src/closest-hue.ts +++ b/packages/color/src/closest-hue.ts @@ -1,4 +1,4 @@ -import { Hue } from "./constants"; +import type { Hue } from "./constants"; import { ensureHue } from "./internal/ensure-hue"; /** diff --git a/packages/color/src/hue-rgba.ts b/packages/color/src/hue-rgba.ts index 898f80595b..8e7d5f57eb 100644 --- a/packages/color/src/hue-rgba.ts +++ b/packages/color/src/hue-rgba.ts @@ -1,7 +1,7 @@ import { clamp01 } from "@thi.ng/math"; import { setC4 } from "@thi.ng/vectors"; import type { Color } from "./api"; -import { Hue } from "./constants"; +import type { Hue } from "./constants"; import { ensureHue } from "./internal/ensure-hue"; /** diff --git a/packages/color/src/internal/acolor.ts b/packages/color/src/internal/acolor.ts index 6b2c726bde..b9a56718c2 100644 --- a/packages/color/src/internal/acolor.ts +++ b/packages/color/src/internal/acolor.ts @@ -2,7 +2,7 @@ import type { IDeref } from "@thi.ng/api"; import { EPS } from "@thi.ng/math"; import { eqDelta4, stridedValues } from "@thi.ng/vectors"; import type { Color, IColor } from "../api"; -import { ColorMode } from "../constants"; +import type { ColorMode } from "../constants"; export abstract class AColor implements IColor, IDeref { buf: Color; diff --git a/packages/color/test/index.ts b/packages/color/test/index.ts index b24042baaf..2cbff8a272 100644 --- a/packages/color/test/index.ts +++ b/packages/color/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as c from "../src/index"; +// import * as c from "../src"; describe("color", () => { it("tests pending"); From 71763022a683d644a36d916e0045438894c1b0e1 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:49:40 +0000 Subject: [PATCH 42/71] refactor(csp): update type-only imports --- packages/csp/src/api.ts | 2 +- packages/csp/test/graph.ts | 1 - packages/csp/test/node.ts | 4 +--- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/csp/src/api.ts b/packages/csp/src/api.ts index 683cf2dadb..a35babbd03 100644 --- a/packages/csp/src/api.ts +++ b/packages/csp/src/api.ts @@ -1,5 +1,5 @@ import type { Fn, IID, ILength, IRelease } from "@thi.ng/api"; -import { Channel } from "./channel"; +import type { Channel } from "./channel"; export interface ChannelItem { value(): Promise; diff --git a/packages/csp/test/graph.ts b/packages/csp/test/graph.ts index 5ea970ae09..5761ac9b04 100644 --- a/packages/csp/test/graph.ts +++ b/packages/csp/test/graph.ts @@ -1,6 +1,5 @@ import type { IObjectOf } from "@thi.ng/api"; import { Channel, Mult } from "../src"; -// import * as tx from "@thi.ng/transducers"; export interface Node { ins: IObjectOf>; diff --git a/packages/csp/test/node.ts b/packages/csp/test/node.ts index faa3a62a76..db0680efe0 100644 --- a/packages/csp/test/node.ts +++ b/packages/csp/test/node.ts @@ -1,9 +1,7 @@ import type { IEnable, IID, IObjectOf } from "@thi.ng/api"; import { implementsFunction } from "@thi.ng/checks"; import { map, Transducer } from "@thi.ng/transducers"; -import type { IBuffer, IWriteableChannel } from "../src/api"; -import { Channel } from "../src/channel"; -import { Mult } from "../src/mult"; +import { Channel, IBuffer, IWriteableChannel, Mult } from "../src"; export type NodeInput = | NodeInputSpec From 32cfc255a9cb4d5ac9e0f6544ef12cc995864743 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:50:05 +0000 Subject: [PATCH 43/71] refactor(csv): update type-only imports --- packages/csv/src/transforms.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/csv/src/transforms.ts b/packages/csv/src/transforms.ts index 8b5b13bf09..5075d2c039 100644 --- a/packages/csv/src/transforms.ts +++ b/packages/csv/src/transforms.ts @@ -1,5 +1,5 @@ import { maybeParseFloat, maybeParseInt } from "@thi.ng/strings"; -import { CellTransform } from "./api"; +import type { CellTransform } from "./api"; export const upper: CellTransform = (x) => x.toUpperCase(); From 4b1eb35c2678d558df9c87340bf19927ddaef4b2 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:50:42 +0000 Subject: [PATCH 44/71] refactor(date): update type-only imports --- packages/date/src/i18n.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/date/src/i18n.ts b/packages/date/src/i18n.ts index a6b5a5450d..8b63ee493c 100644 --- a/packages/date/src/i18n.ts +++ b/packages/date/src/i18n.ts @@ -1,4 +1,4 @@ -import { Locale } from "./api"; +import type { Locale } from "./api"; export const EN_SHORT: Locale = { months: [ From 3fd9c24ba3895b761bd1f0455d61e00cfe59a87c Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:56:26 +0000 Subject: [PATCH 45/71] refactor: update type-only imports in various tests/pkgs --- packages/dcons/test/index.ts | 2 +- packages/defmulti/test/index.ts | 2 +- packages/dgraph-dot/test/index.ts | 2 +- packages/dgraph/test/index.ts | 2 +- packages/diff/test/array.ts | 2 +- packages/dlogic/test/index.ts | 2 +- packages/dot/test/example.ts | 2 +- packages/dot/test/index.ts | 2 +- packages/dsp/test/index.ts | 2 +- packages/egf/test/serialize.ts | 4 ++-- packages/equiv/test/index.ts | 2 +- packages/errors/test/index.ts | 2 +- packages/fsm/test/index.ts | 2 +- packages/geom-accel/test/index.ts | 2 +- packages/geom-accel/test/quadtree.ts | 2 +- packages/geom-api/test/index.ts | 2 +- packages/geom-arc/test/index.ts | 2 +- packages/geom-clip-poly/test/index.ts | 2 +- packages/geom-closest-point/test/index.ts | 2 +- packages/geom-isoline/test/index.ts | 2 +- packages/geom-poly-utils/test/index.ts | 2 +- packages/geom-resample/test/index.ts | 2 +- packages/geom-splines/test/index.ts | 2 +- packages/geom-subdiv-curve/test/index.ts | 2 +- packages/geom-tessellate/test/index.ts | 2 +- packages/geom-voronoi/test/index.ts | 2 +- packages/geom/test/index.ts | 2 +- packages/grid-iterators/test/index.ts | 2 +- packages/hdom-canvas/test/index.ts | 2 +- packages/hdom-components/test/index.ts | 2 +- packages/hdom-mock/test/index.ts | 2 +- packages/hdom/test/index.ts | 2 +- packages/heaps/test/dheap.ts | 4 ++-- packages/heaps/test/heap.ts | 4 ++-- packages/hiccup-markdown/test/serialize.ts | 2 +- packages/hiccup-svg/test/index.ts | 2 +- packages/hiccup/test/index.ts | 2 +- packages/iges/test/index.ts | 2 +- packages/imgui/test/index.ts | 2 +- packages/interceptors/test/index.ts | 2 +- packages/iterators/test/index.ts | 2 +- packages/leb128/test/index.ts | 2 +- packages/malloc/test/index.ts | 2 +- packages/math/test/index.ts | 2 +- packages/matrices/test/index.ts | 4 ++-- packages/memoize/test/index.ts | 8 ++++---- packages/morton/test/index.ts | 4 ++-- packages/pixel/test/float.ts | 2 +- packages/pixel/test/index.ts | 6 +++--- packages/pointfree-lang/test/index.ts | 4 ++-- packages/pointfree-lang/test/readme.ts | 2 +- packages/pointfree/test/index.ts | 4 ++-- packages/pointfree/test/loop.ts | 2 +- packages/poisson/test/index.ts | 2 +- packages/porter-duff/test/index.ts | 2 +- packages/quad-edge/test/index.ts | 2 +- packages/ramp/test/index.ts | 2 +- packages/random/test/index.ts | 2 +- packages/resolve-map/test/index.ts | 2 +- packages/rle-pack/test/index.ts | 2 +- packages/router/test/index.ts | 2 +- packages/rstream-csp/test/index.ts | 2 +- packages/rstream-dot/test/index.ts | 2 +- packages/rstream-gestures/test/index.ts | 2 +- packages/rstream-log-file/test/index.ts | 2 +- packages/rstream-query/test/index.ts | 2 +- packages/rstream/test/bisect.ts | 2 +- packages/rstream/test/debounce.ts | 2 +- packages/rstream/test/from-atom.ts | 2 +- packages/rstream/test/from-iterable.ts | 2 +- packages/rstream/test/from-promise.ts | 2 +- packages/rstream/test/metastream.ts | 2 +- packages/rstream/test/object.ts | 2 +- packages/rstream/test/pubsub.ts | 10 ++-------- packages/rstream/test/sidechain-partition.ts | 2 +- packages/rstream/test/sidechain-toggle.ts | 2 +- packages/rstream/test/stream-merge.ts | 2 +- packages/rstream/test/stream-sync.ts | 2 +- packages/rstream/test/subscription.ts | 8 ++++---- packages/rstream/test/transducers.ts | 2 +- packages/sax/test/index.ts | 2 +- packages/scenegraph/test/index.ts | 2 +- packages/sexpr/test/index.ts | 4 ++-- packages/shader-ast-js/test/index.ts | 2 +- packages/shader-ast-stdlib/test/index.ts | 2 +- packages/strings/test/index.ts | 2 +- packages/strings/test/splice.ts | 2 +- packages/transducers-binary/test/index.ts | 2 +- packages/transducers-binary/test/partition-bits.ts | 5 ++--- packages/transducers-fsm/test/index.ts | 2 +- packages/transducers-hdom/test/index.ts | 2 +- packages/transducers-stats/test/index.ts | 2 +- packages/transducers/test/drop.ts | 3 +-- packages/transducers/test/filter.ts | 3 +-- packages/transducers/test/flatten.ts | 3 +-- packages/transducers/test/fuzzy.ts | 3 +-- packages/transducers/test/juxtr.ts | 3 +-- packages/transducers/test/keyperms.ts | 3 +-- packages/transducers/test/map-deep.ts | 3 +-- packages/transducers/test/map.ts | 3 +-- packages/transducers/test/pad-last.ts | 3 +-- packages/transducers/test/permutations.ts | 6 +----- packages/transducers/test/range.ts | 4 +--- packages/transducers/test/take.ts | 3 +-- packages/unionstruct/test/index.ts | 2 +- packages/vectors/test/index.ts | 2 +- packages/webgl-msdf/test/index.ts | 2 +- packages/webgl-shadertoy/test/index.ts | 2 +- packages/webgl/test/index.ts | 2 +- 109 files changed, 127 insertions(+), 150 deletions(-) diff --git a/packages/dcons/test/index.ts b/packages/dcons/test/index.ts index a8167393a1..fe8d9714c7 100644 --- a/packages/dcons/test/index.ts +++ b/packages/dcons/test/index.ts @@ -2,7 +2,7 @@ import { compareNumDesc } from "@thi.ng/compare"; import { XsAdd } from "@thi.ng/random"; import { range } from "@thi.ng/transducers"; import * as assert from "assert"; -import { DCons, defDCons } from "../src/index"; +import { DCons, defDCons } from "../src"; describe("DCons", () => { let a: DCons, src: number[]; diff --git a/packages/defmulti/test/index.ts b/packages/defmulti/test/index.ts index 4a95ff2bdd..b11a1ef2a8 100644 --- a/packages/defmulti/test/index.ts +++ b/packages/defmulti/test/index.ts @@ -6,7 +6,7 @@ import { defmultiN, implementations, setLogger, -} from "../src/index"; +} from "../src"; // prettier-ignore describe("defmulti", () => { diff --git a/packages/dgraph-dot/test/index.ts b/packages/dgraph-dot/test/index.ts index b2a8a80077..486be46ca3 100644 --- a/packages/dgraph-dot/test/index.ts +++ b/packages/dgraph-dot/test/index.ts @@ -1,5 +1,5 @@ -import * as assert from "assert"; import { defDGraph } from "@thi.ng/dgraph"; +import * as assert from "assert"; import { toDot } from "../src"; describe("dgraph-dot", () => { diff --git a/packages/dgraph/test/index.ts b/packages/dgraph/test/index.ts index 66b3b02949..8199bdd517 100644 --- a/packages/dgraph/test/index.ts +++ b/packages/dgraph/test/index.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { DGraph } from "../src/index"; +import { DGraph } from "../src"; describe("dgraph", () => { let g: DGraph; diff --git a/packages/diff/test/array.ts b/packages/diff/test/array.ts index 98f1c6d6dc..feb19661db 100644 --- a/packages/diff/test/array.ts +++ b/packages/diff/test/array.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { ArrayDiff, diffArray, DiffMode } from "../src/index"; +import { ArrayDiff, diffArray, DiffMode } from "../src"; describe("array", function () { const state = >{ diff --git a/packages/dlogic/test/index.ts b/packages/dlogic/test/index.ts index 9739c69974..d1bf8b73c2 100644 --- a/packages/dlogic/test/index.ts +++ b/packages/dlogic/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as dl from "../src/index"; +// import * as dl from "../src"; describe("dlogic", () => { it("tests pending"); diff --git a/packages/dot/test/example.ts b/packages/dot/test/example.ts index 703c040426..e35cee079c 100644 --- a/packages/dot/test/example.ts +++ b/packages/dot/test/example.ts @@ -1,5 +1,5 @@ -import * as dot from "../src/"; import * as fs from "fs"; +import * as dot from "../src"; // node type style presets const terminal: Partial = { diff --git a/packages/dot/test/index.ts b/packages/dot/test/index.ts index 18e688e19b..b7bbbacd07 100644 --- a/packages/dot/test/index.ts +++ b/packages/dot/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as dot from "../src/index"; +// import * as dot from "../src"; describe("dot", () => { it("tests pending"); diff --git a/packages/dsp/test/index.ts b/packages/dsp/test/index.ts index fcc7940253..ede69a9bd0 100644 --- a/packages/dsp/test/index.ts +++ b/packages/dsp/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as dsp from "../src/index"; +// import * as dsp from "../src"; describe("dsp", () => { it("tests pending"); diff --git a/packages/egf/test/serialize.ts b/packages/egf/test/serialize.ts index 3ab6f11ef6..b729f5ac68 100644 --- a/packages/egf/test/serialize.ts +++ b/packages/egf/test/serialize.ts @@ -1,7 +1,7 @@ -import * as assert from "assert"; -import { toEGF } from "../src"; import { rdf, schema } from "@thi.ng/prefixes"; +import * as assert from "assert"; import { writeFileSync } from "fs"; +import { toEGF } from "../src"; describe("serialize", () => { it("basics", () => { diff --git a/packages/equiv/test/index.ts b/packages/equiv/test/index.ts index fe0faee710..cb8e39aba5 100644 --- a/packages/equiv/test/index.ts +++ b/packages/equiv/test/index.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { equiv } from "../src/"; +import { equiv } from "../src"; describe("equiv", () => { it("null", () => { diff --git a/packages/errors/test/index.ts b/packages/errors/test/index.ts index 10bdfc7a81..98eb9320db 100644 --- a/packages/errors/test/index.ts +++ b/packages/errors/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as errors from "../src/index"; +// import * as errors from "../src"; describe("errors", () => { it("tests pending"); diff --git a/packages/fsm/test/index.ts b/packages/fsm/test/index.ts index b089705eea..377beef820 100644 --- a/packages/fsm/test/index.ts +++ b/packages/fsm/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as f from "../src/index"; +// import * as f from "../src"; describe("fsm", () => { it("tests pending"); diff --git a/packages/geom-accel/test/index.ts b/packages/geom-accel/test/index.ts index 5ed0a5b820..71af17fdfe 100644 --- a/packages/geom-accel/test/index.ts +++ b/packages/geom-accel/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as ga from "../src/index"; +// import * as ga from "../src"; describe("geom-accel", () => { it("tests pending"); diff --git a/packages/geom-accel/test/quadtree.ts b/packages/geom-accel/test/quadtree.ts index e98e8edb1b..bd76d0016d 100644 --- a/packages/geom-accel/test/quadtree.ts +++ b/packages/geom-accel/test/quadtree.ts @@ -1,5 +1,5 @@ import { mapIndexed } from "@thi.ng/transducers"; -import { ReadonlyVec } from "@thi.ng/vectors"; +import type { ReadonlyVec } from "@thi.ng/vectors"; import * as assert from "assert"; import { NdQuadtreeMap } from "../src"; diff --git a/packages/geom-api/test/index.ts b/packages/geom-api/test/index.ts index 1eb82fd2ef..46fc9a057e 100644 --- a/packages/geom-api/test/index.ts +++ b/packages/geom-api/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as ga from "../src/index"; +// import * as ga from "../src"; describe("geom-api", () => { it("tests pending"); diff --git a/packages/geom-arc/test/index.ts b/packages/geom-arc/test/index.ts index bf97130d32..b72f3456d7 100644 --- a/packages/geom-arc/test/index.ts +++ b/packages/geom-arc/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as ga from "../src/index"; +// import * as ga from "../src"; describe("geom-arc", () => { it("tests pending"); diff --git a/packages/geom-clip-poly/test/index.ts b/packages/geom-clip-poly/test/index.ts index bcbfedc041..46ef8b84db 100644 --- a/packages/geom-clip-poly/test/index.ts +++ b/packages/geom-clip-poly/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gc from "../src/index"; +// import * as gc from "../src"; describe("geom-clip", () => { it("tests pending"); diff --git a/packages/geom-closest-point/test/index.ts b/packages/geom-closest-point/test/index.ts index 36c73506b9..cb2e7e395e 100644 --- a/packages/geom-closest-point/test/index.ts +++ b/packages/geom-closest-point/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gcp from "../src/index"; +// import * as gcp from "../src"; describe("geom-closest-point", () => { it("tests pending"); diff --git a/packages/geom-isoline/test/index.ts b/packages/geom-isoline/test/index.ts index 58b82885f2..50af70588b 100644 --- a/packages/geom-isoline/test/index.ts +++ b/packages/geom-isoline/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gi from "../src/index"; +// import * as gi from "../src"; describe("geom-isoline", () => { it("tests pending"); diff --git a/packages/geom-poly-utils/test/index.ts b/packages/geom-poly-utils/test/index.ts index 79565f7c05..4c01f91caf 100644 --- a/packages/geom-poly-utils/test/index.ts +++ b/packages/geom-poly-utils/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gpu from "../src/index"; +// import * as gpu from "../src"; describe("geom-poly-utils", () => { it("tests pending"); diff --git a/packages/geom-resample/test/index.ts b/packages/geom-resample/test/index.ts index ba9d96d47c..904ed1ce01 100644 --- a/packages/geom-resample/test/index.ts +++ b/packages/geom-resample/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gs from "../src/index"; +// import * as gs from "../src"; describe("geom-resample", () => { it("tests pending"); diff --git a/packages/geom-splines/test/index.ts b/packages/geom-splines/test/index.ts index 14c7198207..d5bbc9f64b 100644 --- a/packages/geom-splines/test/index.ts +++ b/packages/geom-splines/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gs from "../src/index"; +// import * as gs from "../src"; describe("geom-splines", () => { it("tests pending"); diff --git a/packages/geom-subdiv-curve/test/index.ts b/packages/geom-subdiv-curve/test/index.ts index a72cbe0755..a3e40fefba 100644 --- a/packages/geom-subdiv-curve/test/index.ts +++ b/packages/geom-subdiv-curve/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gsc from "../src/index"; +// import * as gsc from "../src"; describe("geom-subdiv-curve", () => { it("tests pending"); diff --git a/packages/geom-tessellate/test/index.ts b/packages/geom-tessellate/test/index.ts index ec6cc8de55..62a9dc474a 100644 --- a/packages/geom-tessellate/test/index.ts +++ b/packages/geom-tessellate/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gt from "../src/index"; +// import * as gt from "../src"; describe("geom-tessellate", () => { it("tests pending"); diff --git a/packages/geom-voronoi/test/index.ts b/packages/geom-voronoi/test/index.ts index c8fec2dd13..93652503ee 100644 --- a/packages/geom-voronoi/test/index.ts +++ b/packages/geom-voronoi/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gv from "../src/index"; +// import * as gv from "../src"; describe("geom-voronoi", () => { it("tests pending"); diff --git a/packages/geom/test/index.ts b/packages/geom/test/index.ts index f5862820cb..fcd57bb083 100644 --- a/packages/geom/test/index.ts +++ b/packages/geom/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as g from "../src/index"; +// import * as g from "../src"; describe("geom", () => { it("tests pending"); diff --git a/packages/grid-iterators/test/index.ts b/packages/grid-iterators/test/index.ts index ae394d6d00..91279b3f05 100644 --- a/packages/grid-iterators/test/index.ts +++ b/packages/grid-iterators/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gi from "../src/index"; +// import * as gi from "../src"; describe("grid-iterators", () => { it("tests pending"); diff --git a/packages/hdom-canvas/test/index.ts b/packages/hdom-canvas/test/index.ts index 5d38d2df62..785e0aa5cf 100644 --- a/packages/hdom-canvas/test/index.ts +++ b/packages/hdom-canvas/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as hc from "../src/index"; +// import * as hc from "../src"; describe("hiccup-canvas", () => { it("tests pending"); diff --git a/packages/hdom-components/test/index.ts b/packages/hdom-components/test/index.ts index db60e518c2..db4aa91564 100644 --- a/packages/hdom-components/test/index.ts +++ b/packages/hdom-components/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as hc from "../src/index"; +// import * as hc from "../src"; describe("hdom-components", () => { it("tests pending"); diff --git a/packages/hdom-mock/test/index.ts b/packages/hdom-mock/test/index.ts index 529ca74cb4..c16ea7c6b3 100644 --- a/packages/hdom-mock/test/index.ts +++ b/packages/hdom-mock/test/index.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { HDOMNode, MockHDOM } from "../src/index"; +import { HDOMNode, MockHDOM } from "../src"; describe("hdom-mock", () => { it("node", () => { diff --git a/packages/hdom/test/index.ts b/packages/hdom/test/index.ts index 27a5ab9dbe..b3f8b74b5f 100644 --- a/packages/hdom/test/index.ts +++ b/packages/hdom/test/index.ts @@ -2,7 +2,7 @@ import { defAtom, defView } from "@thi.ng/atom"; import { derefContext } from "@thi.ng/hiccup"; import { map, range } from "@thi.ng/iterators"; import * as assert from "assert"; -import { normalizeTree } from "../src/normalize"; +import { normalizeTree } from "../src"; const _check = (a: any, b: any, ctx: any = null) => assert.deepStrictEqual( diff --git a/packages/heaps/test/dheap.ts b/packages/heaps/test/dheap.ts index 20c0e30087..286a9f9c16 100644 --- a/packages/heaps/test/dheap.ts +++ b/packages/heaps/test/dheap.ts @@ -1,6 +1,6 @@ -import * as assert from "assert"; -import { DHeap } from "../src/index"; import { compare } from "@thi.ng/compare"; +import * as assert from "assert"; +import { DHeap } from "../src"; describe("DHeap", () => { const rcmp: (a: number, b: number) => number = (a, b) => b - a; diff --git a/packages/heaps/test/heap.ts b/packages/heaps/test/heap.ts index 57633e805d..a52b5d4e40 100644 --- a/packages/heaps/test/heap.ts +++ b/packages/heaps/test/heap.ts @@ -1,6 +1,6 @@ -import * as assert from "assert"; -import { Heap } from "../src/index"; import { compare } from "@thi.ng/compare"; +import * as assert from "assert"; +import { Heap } from "../src"; describe("Heap", () => { const rcmp: (a: number, b: number) => number = (a, b) => b - a; diff --git a/packages/hiccup-markdown/test/serialize.ts b/packages/hiccup-markdown/test/serialize.ts index 5292ae4839..3cf568bf3b 100644 --- a/packages/hiccup-markdown/test/serialize.ts +++ b/packages/hiccup-markdown/test/serialize.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { serialize } from "../src/serialize"; +import { serialize } from "../src"; describe("hiccup-markdown", () => { it("serialize", () => { diff --git a/packages/hiccup-svg/test/index.ts b/packages/hiccup-svg/test/index.ts index 80ae488c48..34874586fa 100644 --- a/packages/hiccup-svg/test/index.ts +++ b/packages/hiccup-svg/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as svg from "../src/index"; +// import * as svg from "../src"; describe("hiccup-svg", () => { it("tests pending"); diff --git a/packages/hiccup/test/index.ts b/packages/hiccup/test/index.ts index 605858f0cb..a7d8feb028 100644 --- a/packages/hiccup/test/index.ts +++ b/packages/hiccup/test/index.ts @@ -1,7 +1,7 @@ import { Atom } from "@thi.ng/atom"; import { foaf } from "@thi.ng/prefixes"; import * as assert from "assert"; -import { serialize } from "../src/index"; +import { serialize } from "../src"; function _check(a: any, b: any) { assert.strictEqual(serialize(a), b); diff --git a/packages/iges/test/index.ts b/packages/iges/test/index.ts index cb9a9e6e1a..b562998615 100644 --- a/packages/iges/test/index.ts +++ b/packages/iges/test/index.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import * as iges from "../src/index"; +import * as iges from "../src"; describe("iges", () => { it("basic", () => { diff --git a/packages/imgui/test/index.ts b/packages/imgui/test/index.ts index 41d0cbf0ba..c6252e652a 100644 --- a/packages/imgui/test/index.ts +++ b/packages/imgui/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as i from "../src/index"; +// import * as i from "../src"; describe("imgui", () => { it("tests pending"); diff --git a/packages/interceptors/test/index.ts b/packages/interceptors/test/index.ts index 11e0c337ad..4b155f74f5 100644 --- a/packages/interceptors/test/index.ts +++ b/packages/interceptors/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as interceptors from "../src/index"; +// import * as interceptors from "../src"; describe("interceptors", () => { it("tests pending"); diff --git a/packages/iterators/test/index.ts b/packages/iterators/test/index.ts index 21077d2169..ffc1dbdbbf 100644 --- a/packages/iterators/test/index.ts +++ b/packages/iterators/test/index.ts @@ -1,5 +1,5 @@ -import * as ti from "../src/index"; import * as assert from "assert"; +import * as ti from "../src"; describe("iterators", function () { it("butLast", () => { diff --git a/packages/leb128/test/index.ts b/packages/leb128/test/index.ts index 2774184a8b..5cf7660177 100644 --- a/packages/leb128/test/index.ts +++ b/packages/leb128/test/index.ts @@ -5,7 +5,7 @@ import { decodeULEB128, encodeSLEB128, encodeULEB128, -} from "../src/index"; +} from "../src"; describe("leb128", () => { if (hasWASM()) { diff --git a/packages/malloc/test/index.ts b/packages/malloc/test/index.ts index 44b7d78a2d..663c53489f 100644 --- a/packages/malloc/test/index.ts +++ b/packages/malloc/test/index.ts @@ -1,7 +1,7 @@ import { Type, TypedArray } from "@thi.ng/api"; import { align } from "@thi.ng/binary"; import * as assert from "assert"; -import { MemPool } from "../src/index"; +import { MemPool } from "../src"; const POOL_OVERHEAD = 7 * 4; const BLOCK_OVERHEAD = 2 * 4; diff --git a/packages/math/test/index.ts b/packages/math/test/index.ts index 91beafe41b..73612f3881 100644 --- a/packages/math/test/index.ts +++ b/packages/math/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as m from "../src/index"; +// import * as m from "../src"; describe("math", () => { it("tests pending"); diff --git a/packages/matrices/test/index.ts b/packages/matrices/test/index.ts index dcf766d434..57f0b01416 100644 --- a/packages/matrices/test/index.ts +++ b/packages/matrices/test/index.ts @@ -1,6 +1,6 @@ -import * as assert from "assert"; -import * as m from "../src/index"; import { range } from "@thi.ng/transducers"; +import * as assert from "assert"; +import * as m from "../src"; describe("matrices", () => { it("identity (fixed)", () => { diff --git a/packages/memoize/test/index.ts b/packages/memoize/test/index.ts index b3b76c937e..0136db0878 100644 --- a/packages/memoize/test/index.ts +++ b/packages/memoize/test/index.ts @@ -1,12 +1,12 @@ import { EquivMap } from "@thi.ng/associative"; import { LRUCache } from "@thi.ng/cache"; import * as assert from "assert"; -import * as m from "../src/index"; +import { memoize1 } from "../src"; describe("memoize", () => { it("memoize1", () => { const calls: number[] = []; - const f = m.memoize1((x) => (calls.push(x), x * 10)); + const f = memoize1((x) => (calls.push(x), x * 10)); assert.strictEqual(f(1), 10); assert.strictEqual(f(2), 20); assert.strictEqual(f(2), 20); @@ -17,7 +17,7 @@ describe("memoize", () => { it("memoize1 (equivmap)", () => { const calls: number[][] = []; - const f = m.memoize1( + const f = memoize1( (x) => (calls.push(x), x[0] + x[1]), new EquivMap() ); @@ -39,7 +39,7 @@ describe("memoize", () => { maxlen: 3, map: () => new EquivMap(), }); - const f = m.memoize1( + const f = memoize1( (x) => (calls.push(x), x[0] + x[1]), cache ); diff --git a/packages/morton/test/index.ts b/packages/morton/test/index.ts index 6873cb9672..1657a9238f 100644 --- a/packages/morton/test/index.ts +++ b/packages/morton/test/index.ts @@ -1,10 +1,10 @@ import * as assert from "assert"; import { cartesianToTree, + mortonToTree, treeToCartesian, treeToMorton, - mortonToTree, -} from "../src/index"; +} from "../src"; describe("morton", () => { it("tree <> cartesian3 fuzz", function () { diff --git a/packages/pixel/test/float.ts b/packages/pixel/test/float.ts index 5519f998b3..afc2526593 100644 --- a/packages/pixel/test/float.ts +++ b/packages/pixel/test/float.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { FLOAT_GRAY, FLOAT_RGBA, FLOAT_GRAY_ALPHA, FLOAT_RGB } from "../src"; +import { FLOAT_GRAY, FLOAT_GRAY_ALPHA, FLOAT_RGB, FLOAT_RGBA } from "../src"; describe("float", () => { it("FLOAT_GRAY", () => { diff --git a/packages/pixel/test/index.ts b/packages/pixel/test/index.ts index c3f4d20698..43cd401fc2 100644 --- a/packages/pixel/test/index.ts +++ b/packages/pixel/test/index.ts @@ -5,14 +5,14 @@ import { ARGB4444, ARGB8888, BGR888, - GRAY_ALPHA16, - GRAY_ALPHA8, GRAY16, GRAY8, + GRAY_ALPHA16, + GRAY_ALPHA8, PackedFormat, RGB565, RGB888, -} from "../src/index"; +} from "../src"; // import { equiv } from "@thi.ng/equiv"; const testFromABGR = (fmt: PackedFormat, specs: number[]) => { diff --git a/packages/pointfree-lang/test/index.ts b/packages/pointfree-lang/test/index.ts index 8a8e14e180..24e06cdd8b 100644 --- a/packages/pointfree-lang/test/index.ts +++ b/packages/pointfree-lang/test/index.ts @@ -1,6 +1,6 @@ -import * as assert from "assert"; import * as pf from "@thi.ng/pointfree"; -import { run, runU } from "../src/index"; +import * as assert from "assert"; +import { run, runU } from "../src"; describe("pointfree-lang", () => { it("nil", () => { diff --git a/packages/pointfree-lang/test/readme.ts b/packages/pointfree-lang/test/readme.ts index 13ad22f26d..70170dac51 100644 --- a/packages/pointfree-lang/test/readme.ts +++ b/packages/pointfree-lang/test/readme.ts @@ -1,4 +1,4 @@ -import { StackContext } from "@thi.ng/pointfree"; +import type { StackContext } from "@thi.ng/pointfree"; import * as pf from "../src"; const src = ` diff --git a/packages/pointfree/test/index.ts b/packages/pointfree/test/index.ts index d9b66ff7ed..a2414e0cc3 100644 --- a/packages/pointfree/test/index.ts +++ b/packages/pointfree/test/index.ts @@ -1,6 +1,6 @@ import * as assert from "assert"; -import { StackContext } from "../src/api"; -import * as pf from "../src/index"; +import * as pf from "../src"; +import type { StackContext } from "../src"; // prettier-ignore describe("pointfree", () => { diff --git a/packages/pointfree/test/loop.ts b/packages/pointfree/test/loop.ts index 6fbf846218..075cee1afd 100644 --- a/packages/pointfree/test/loop.ts +++ b/packages/pointfree/test/loop.ts @@ -1,5 +1,5 @@ +import type { StackFn, StackProgram } from "../src"; import * as pf from "../src"; -import { StackFn, StackProgram } from "../src/api"; /** * This higher order word defines a 2D loop construct, executing a user diff --git a/packages/poisson/test/index.ts b/packages/poisson/test/index.ts index 699136e521..b14f77286e 100644 --- a/packages/poisson/test/index.ts +++ b/packages/poisson/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gp from "../src/index"; +// import * as gp from "../src"; describe("poisson", () => { it("tests pending"); diff --git a/packages/porter-duff/test/index.ts b/packages/porter-duff/test/index.ts index 7e992b0516..9c201fd68b 100644 --- a/packages/porter-duff/test/index.ts +++ b/packages/porter-duff/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as pd from "../src/index"; +// import * as pd from "../src"; describe("porter-duff", () => { it("tests pending"); diff --git a/packages/quad-edge/test/index.ts b/packages/quad-edge/test/index.ts index 6b2b0b397e..c7fc45b6b0 100644 --- a/packages/quad-edge/test/index.ts +++ b/packages/quad-edge/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as q from "../src/index"; +// import * as q from "../src"; describe("quad-edge", () => { it("tests pending"); diff --git a/packages/ramp/test/index.ts b/packages/ramp/test/index.ts index a1c99298e4..b2cfedd9ad 100644 --- a/packages/ramp/test/index.ts +++ b/packages/ramp/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as r from "../src/index"; +// import * as r from "../src"; describe("ramp", () => { it("tests pending"); diff --git a/packages/random/test/index.ts b/packages/random/test/index.ts index 8bcbcc6152..ef86d5c44f 100644 --- a/packages/random/test/index.ts +++ b/packages/random/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as r from "../src/index"; +// import * as r from "../src"; describe("random", () => { it("tests pending"); diff --git a/packages/resolve-map/test/index.ts b/packages/resolve-map/test/index.ts index 50d157c4bc..20dac7d5e0 100644 --- a/packages/resolve-map/test/index.ts +++ b/packages/resolve-map/test/index.ts @@ -1,6 +1,6 @@ import * as tx from "@thi.ng/transducers"; import * as assert from "assert"; -import { resolve, ResolveFn } from "../src/index"; +import { resolve, ResolveFn } from "../src"; describe("resolve-map", () => { it("simple", () => { diff --git a/packages/rle-pack/test/index.ts b/packages/rle-pack/test/index.ts index 23c73580ec..f5eb107d8e 100644 --- a/packages/rle-pack/test/index.ts +++ b/packages/rle-pack/test/index.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { decode, encode } from "../src/index"; +import { decode, encode } from "../src"; // prettier-ignore describe("rle-pack", () => { diff --git a/packages/router/test/index.ts b/packages/router/test/index.ts index 410ac8add6..002ae7bfba 100644 --- a/packages/router/test/index.ts +++ b/packages/router/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as router from "../src/index"; +// import * as router from "../src"; describe("router", function () { it("feature"); diff --git a/packages/rstream-csp/test/index.ts b/packages/rstream-csp/test/index.ts index d169935b7e..511d9da505 100644 --- a/packages/rstream-csp/test/index.ts +++ b/packages/rstream-csp/test/index.ts @@ -1,7 +1,7 @@ import * as csp from "@thi.ng/csp"; import * as rs from "@thi.ng/rstream"; import * as assert from "assert"; -import { fromChannel } from "../src/index"; +import { fromChannel } from "../src"; describe("fromChannel", function () { it("receives all values", (done) => { diff --git a/packages/rstream-dot/test/index.ts b/packages/rstream-dot/test/index.ts index f84b88f178..7615965452 100644 --- a/packages/rstream-dot/test/index.ts +++ b/packages/rstream-dot/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as rstream-dot from "../src/index"; +// import * as rstream-dot from "../src"; describe("rstream-dot", () => { it("tests pending"); diff --git a/packages/rstream-gestures/test/index.ts b/packages/rstream-gestures/test/index.ts index ca40e76ad7..cc9b59284c 100644 --- a/packages/rstream-gestures/test/index.ts +++ b/packages/rstream-gestures/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as rstream-gestures from "../src/index"; +// import * as rstream-gestures from "../src"; describe("rstream-gestures", () => { it("tests pending"); diff --git a/packages/rstream-log-file/test/index.ts b/packages/rstream-log-file/test/index.ts index 0b0f73f32f..6b6eb7fcf0 100644 --- a/packages/rstream-log-file/test/index.ts +++ b/packages/rstream-log-file/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as rlf from "../src/index"; +// import * as rlf from "../src"; describe("rstream-log-file", () => { it("tests pending"); diff --git a/packages/rstream-query/test/index.ts b/packages/rstream-query/test/index.ts index 71a6f7f99f..667a08b9bd 100644 --- a/packages/rstream-query/test/index.ts +++ b/packages/rstream-query/test/index.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { Triple, TripleIds, TripleStore } from "../src/index"; +import { Triple, TripleIds, TripleStore } from "../src"; describe("rstream-query", () => { const triples: Triple[] = [ diff --git a/packages/rstream/test/bisect.ts b/packages/rstream/test/bisect.ts index 637c89df05..f99f4e8779 100644 --- a/packages/rstream/test/bisect.ts +++ b/packages/rstream/test/bisect.ts @@ -1,6 +1,6 @@ import { map } from "@thi.ng/transducers"; import * as assert from "assert"; -import { bisect, fromIterable, Stream, subscription } from "../src/index"; +import { bisect, fromIterable, Stream, subscription } from "../src"; // prettier-ignore describe("bisect", () => { diff --git a/packages/rstream/test/debounce.ts b/packages/rstream/test/debounce.ts index 898e9d5971..2a7be990ed 100644 --- a/packages/rstream/test/debounce.ts +++ b/packages/rstream/test/debounce.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { debounce, fromIterable } from "../src/index"; +import { debounce, fromIterable } from "../src"; import { TIMEOUT } from "./config"; describe("debounce", function () { diff --git a/packages/rstream/test/from-atom.ts b/packages/rstream/test/from-atom.ts index ad426665f4..d156a716e3 100644 --- a/packages/rstream/test/from-atom.ts +++ b/packages/rstream/test/from-atom.ts @@ -1,6 +1,6 @@ import { Atom, Cursor, History } from "@thi.ng/atom"; import * as assert from "assert"; -import { fromAtom } from "../src/from/atom"; +import { fromAtom } from "../src"; // prettier-ignore describe("fromAtom", () => { diff --git a/packages/rstream/test/from-iterable.ts b/packages/rstream/test/from-iterable.ts index f9c0cc941f..8849f2b2e2 100644 --- a/packages/rstream/test/from-iterable.ts +++ b/packages/rstream/test/from-iterable.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { fromIterable, State, Stream, Subscription } from "../src/index"; +import { fromIterable, State, Stream, Subscription } from "../src"; import { TIMEOUT } from "./config"; describe("fromIterable()", function () { diff --git a/packages/rstream/test/from-promise.ts b/packages/rstream/test/from-promise.ts index 52dcb22791..a0cfee5d52 100644 --- a/packages/rstream/test/from-promise.ts +++ b/packages/rstream/test/from-promise.ts @@ -5,7 +5,7 @@ import { resolve, State, Subscription, -} from "../src/index"; +} from "../src"; import { TIMEOUT } from "./config"; describe("fromPromise()", function () { diff --git a/packages/rstream/test/metastream.ts b/packages/rstream/test/metastream.ts index 10a8342251..52fa94399c 100644 --- a/packages/rstream/test/metastream.ts +++ b/packages/rstream/test/metastream.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { CloseMode, fromIterable, metaStream, State } from "../src/index"; +import { CloseMode, fromIterable, metaStream, State } from "../src"; import { TIMEOUT } from "./config"; describe("MetaStream", function () { diff --git a/packages/rstream/test/object.ts b/packages/rstream/test/object.ts index d3105cc81c..691a4668e9 100644 --- a/packages/rstream/test/object.ts +++ b/packages/rstream/test/object.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { fromObject, State, stream, Subscription } from "../src/index"; +import { fromObject, State, stream, Subscription } from "../src"; type Foo = { a?: number; b: string }; diff --git a/packages/rstream/test/pubsub.ts b/packages/rstream/test/pubsub.ts index bd9e4a1cfe..2273132421 100644 --- a/packages/rstream/test/pubsub.ts +++ b/packages/rstream/test/pubsub.ts @@ -1,13 +1,7 @@ import { EquivMap } from "@thi.ng/associative"; -import { mapIndexed, map } from "@thi.ng/transducers"; +import { map, mapIndexed } from "@thi.ng/transducers"; import * as assert from "assert"; -import { - fromIterable, - fromIterableSync, - PubSub, - pubsub, - State, -} from "../src/index"; +import { fromIterable, fromIterableSync, PubSub, pubsub, State } from "../src"; import { TIMEOUT } from "./config"; describe("PubSub", function () { diff --git a/packages/rstream/test/sidechain-partition.ts b/packages/rstream/test/sidechain-partition.ts index 7ced1935bb..73308456dd 100644 --- a/packages/rstream/test/sidechain-partition.ts +++ b/packages/rstream/test/sidechain-partition.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { sidechainPartition, State, Stream, stream } from "../src/index"; +import { sidechainPartition, State, Stream, stream } from "../src"; describe("SidechainPartition", function () { let src: Stream, side: Stream, buf: any[]; diff --git a/packages/rstream/test/sidechain-toggle.ts b/packages/rstream/test/sidechain-toggle.ts index f2144ec99a..7cab67980e 100644 --- a/packages/rstream/test/sidechain-toggle.ts +++ b/packages/rstream/test/sidechain-toggle.ts @@ -1,6 +1,6 @@ import type { Predicate } from "@thi.ng/api"; import * as assert from "assert"; -import { sidechainToggle, State, Stream, stream } from "../src/index"; +import { sidechainToggle, State, Stream, stream } from "../src"; describe("SidechainToggle", () => { let src: Stream, side: Stream, buf: any[]; diff --git a/packages/rstream/test/stream-merge.ts b/packages/rstream/test/stream-merge.ts index 542c390648..b743d0f3d0 100644 --- a/packages/rstream/test/stream-merge.ts +++ b/packages/rstream/test/stream-merge.ts @@ -7,7 +7,7 @@ import { merge, State, StreamMerge, -} from "../src/index"; +} from "../src"; describe("StreamMerge", () => { let src: StreamMerge; diff --git a/packages/rstream/test/stream-sync.ts b/packages/rstream/test/stream-sync.ts index 10e54210da..50f1fff94c 100644 --- a/packages/rstream/test/stream-sync.ts +++ b/packages/rstream/test/stream-sync.ts @@ -1,7 +1,6 @@ import { Atom } from "@thi.ng/atom"; import { comp, filter, last, map, take } from "@thi.ng/transducers"; import * as assert from "assert"; -import { TIMEOUT } from "./config"; import { CloseMode, fromInterval, @@ -13,6 +12,7 @@ import { sync, transduce, } from "../src"; +import { TIMEOUT } from "./config"; describe("StreamSync", function () { this.retries(3); diff --git a/packages/rstream/test/subscription.ts b/packages/rstream/test/subscription.ts index 16c12f09e0..cecdecbd45 100644 --- a/packages/rstream/test/subscription.ts +++ b/packages/rstream/test/subscription.ts @@ -1,13 +1,13 @@ -import { partition, map } from "@thi.ng/transducers"; +import { map, partition } from "@thi.ng/transducers"; import * as assert from "assert"; import { + CloseMode, fromIterable, + fromIterableSync, State, Stream, - fromIterableSync, - CloseMode, subscription, -} from "../src/index"; +} from "../src"; import { TIMEOUT } from "./config"; describe("Subscription", function () { diff --git a/packages/rstream/test/transducers.ts b/packages/rstream/test/transducers.ts index 4ebbfabd9b..4a1bde047d 100644 --- a/packages/rstream/test/transducers.ts +++ b/packages/rstream/test/transducers.ts @@ -7,7 +7,7 @@ import { take, } from "@thi.ng/transducers"; import * as assert from "assert"; -import { fromIterable, Stream } from "../src/index"; +import { fromIterable, Stream } from "../src"; describe("transducers", () => { let src: Stream; diff --git a/packages/sax/test/index.ts b/packages/sax/test/index.ts index f1bd970cc4..d029a70e87 100644 --- a/packages/sax/test/index.ts +++ b/packages/sax/test/index.ts @@ -1,7 +1,7 @@ import { DEFAULT, defmulti } from "@thi.ng/defmulti"; import * as tx from "@thi.ng/transducers"; import * as assert from "assert"; -import { parse, ParseElement, Type } from "../src/index"; +import { parse, ParseElement, Type } from "../src"; const svg = ` diff --git a/packages/scenegraph/test/index.ts b/packages/scenegraph/test/index.ts index 30938db772..d30990e162 100644 --- a/packages/scenegraph/test/index.ts +++ b/packages/scenegraph/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as s from "../src/index"; +// import * as s from "../src"; describe("scenegraph", () => { it("tests pending"); diff --git a/packages/sexpr/test/index.ts b/packages/sexpr/test/index.ts index 2e27655bd6..32136644eb 100644 --- a/packages/sexpr/test/index.ts +++ b/packages/sexpr/test/index.ts @@ -8,8 +8,8 @@ import { runtime, Sym, SyntaxOpts, - tokenize, -} from "../src/index"; + tokenize +} from "../src"; const ops = defmulti((x) => (x).value); const rt = runtime, any, any>({ diff --git a/packages/shader-ast-js/test/index.ts b/packages/shader-ast-js/test/index.ts index 28590f92c7..30eb97e514 100644 --- a/packages/shader-ast-js/test/index.ts +++ b/packages/shader-ast-js/test/index.ts @@ -1,7 +1,7 @@ import { bvec2, defn, greaterThan, ret, vec2 } from "@thi.ng/shader-ast"; import { eqDelta2 } from "@thi.ng/vectors"; import * as assert from "assert"; -import { JS_DEFAULT_ENV, targetJS } from "../src/"; +import { JS_DEFAULT_ENV, targetJS } from "../src"; describe("shader-ast-js", () => { it("vec2", () => { diff --git a/packages/shader-ast-stdlib/test/index.ts b/packages/shader-ast-stdlib/test/index.ts index 236f7ed1ed..d0578e7460 100644 --- a/packages/shader-ast-stdlib/test/index.ts +++ b/packages/shader-ast-stdlib/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as sas from "../src/index"; +// import * as sas from "../src"; describe("shader-ast-stdlib", () => { it("tests pending"); diff --git a/packages/strings/test/index.ts b/packages/strings/test/index.ts index 75553db7be..b04024accc 100644 --- a/packages/strings/test/index.ts +++ b/packages/strings/test/index.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import * as str from "../src/index"; +import * as str from "../src"; describe("strings", () => { it("padLeft", () => { diff --git a/packages/strings/test/splice.ts b/packages/strings/test/splice.ts index b3efcda0bd..a468842081 100644 --- a/packages/strings/test/splice.ts +++ b/packages/strings/test/splice.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { splice } from "../src/splice"; +import { splice } from "../src"; const SRC = "abc"; diff --git a/packages/transducers-binary/test/index.ts b/packages/transducers-binary/test/index.ts index 103143c03f..ae7275c894 100644 --- a/packages/transducers-binary/test/index.ts +++ b/packages/transducers-binary/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as tb from "../src/index"; +// import * as tb from "../src"; describe("transducers-binary", () => { it("tests pending"); diff --git a/packages/transducers-binary/test/partition-bits.ts b/packages/transducers-binary/test/partition-bits.ts index 9d1304fb45..3e41980743 100644 --- a/packages/transducers-binary/test/partition-bits.ts +++ b/packages/transducers-binary/test/partition-bits.ts @@ -1,15 +1,14 @@ -import * as assert from "assert"; import { radix } from "@thi.ng/strings"; - import { comp, + iterator, map, padLast, partition, - iterator, range, run, } from "@thi.ng/transducers"; +import * as assert from "assert"; import { bits, partitionBits } from "../src"; const src = [0xff, 0xa5, 0xfe, 0xf7]; diff --git a/packages/transducers-fsm/test/index.ts b/packages/transducers-fsm/test/index.ts index 317e6f586c..68b0d65f41 100644 --- a/packages/transducers-fsm/test/index.ts +++ b/packages/transducers-fsm/test/index.ts @@ -1,6 +1,6 @@ import * as tx from "@thi.ng/transducers"; import * as assert from "assert"; -import { fsm } from "../src/index"; +import { fsm } from "../src"; describe("transducers-fsm", () => { it("readme example", () => { diff --git a/packages/transducers-hdom/test/index.ts b/packages/transducers-hdom/test/index.ts index 6e92eb2475..cbc7635030 100644 --- a/packages/transducers-hdom/test/index.ts +++ b/packages/transducers-hdom/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import { updateUI } from "../src/index"; +// import { updateUI } from "../src"; describe("transducers-hdom", () => { it("tests pending"); diff --git a/packages/transducers-stats/test/index.ts b/packages/transducers-stats/test/index.ts index d3ab007784..f7844ebaf9 100644 --- a/packages/transducers-stats/test/index.ts +++ b/packages/transducers-stats/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as transducers-stats from "../src/index"; +// import * as transducers-stats from "../src"; describe("transducers-stats", () => { it("tests pending"); diff --git a/packages/transducers/test/drop.ts b/packages/transducers/test/drop.ts index a4e4b0df11..bffeb29c31 100644 --- a/packages/transducers/test/drop.ts +++ b/packages/transducers/test/drop.ts @@ -1,6 +1,5 @@ -import { drop, range } from "../src"; - import * as assert from "assert"; +import { drop, range } from "../src"; describe("drop", () => { it("starts iterating after N items", () => { diff --git a/packages/transducers/test/filter.ts b/packages/transducers/test/filter.ts index aa8c537c95..6aaa0b7bda 100644 --- a/packages/transducers/test/filter.ts +++ b/packages/transducers/test/filter.ts @@ -1,6 +1,5 @@ -import { filter, range } from "../src"; - import * as assert from "assert"; +import { filter, range } from "../src"; describe("filter", () => { const identity = (x: any) => x; diff --git a/packages/transducers/test/flatten.ts b/packages/transducers/test/flatten.ts index 479221fd4a..916b0efa5d 100644 --- a/packages/transducers/test/flatten.ts +++ b/packages/transducers/test/flatten.ts @@ -1,6 +1,5 @@ -import { flatten, range } from "../src"; - import * as assert from "assert"; +import { flatten, range } from "../src"; describe("flatten", () => { it("empty arrays", () => { diff --git a/packages/transducers/test/fuzzy.ts b/packages/transducers/test/fuzzy.ts index b15b0ab416..66f56a2e3b 100644 --- a/packages/transducers/test/fuzzy.ts +++ b/packages/transducers/test/fuzzy.ts @@ -1,6 +1,5 @@ -import { filterFuzzy } from "../src"; - import * as assert from "assert"; +import { filterFuzzy } from "../src"; describe("fuzzy", () => { it("strings", () => { diff --git a/packages/transducers/test/juxtr.ts b/packages/transducers/test/juxtr.ts index 7dee52e120..7d7af21a5f 100644 --- a/packages/transducers/test/juxtr.ts +++ b/packages/transducers/test/juxtr.ts @@ -1,6 +1,5 @@ -import * as tx from "../src"; - import * as assert from "assert"; +import * as tx from "../src"; const src = [1, 2, 3, 4]; diff --git a/packages/transducers/test/keyperms.ts b/packages/transducers/test/keyperms.ts index a2405fe3ff..975bba5dcc 100644 --- a/packages/transducers/test/keyperms.ts +++ b/packages/transducers/test/keyperms.ts @@ -1,6 +1,5 @@ -import { keyPermutations } from "../src"; - import * as assert from "assert"; +import { keyPermutations } from "../src"; describe("keyPermutations", () => { it("basic", () => { diff --git a/packages/transducers/test/map-deep.ts b/packages/transducers/test/map-deep.ts index 1bf831f745..70d672461f 100644 --- a/packages/transducers/test/map-deep.ts +++ b/packages/transducers/test/map-deep.ts @@ -1,6 +1,5 @@ -import { deepTransform } from "../src/func/deep-transform"; - import * as assert from "assert"; +import { deepTransform } from "../src"; describe("deepTransform", () => { it("transforms hiccup", () => { diff --git a/packages/transducers/test/map.ts b/packages/transducers/test/map.ts index 92d47a8a6b..0438315568 100644 --- a/packages/transducers/test/map.ts +++ b/packages/transducers/test/map.ts @@ -1,6 +1,5 @@ -import { map, range } from "../src"; - import * as assert from "assert"; +import { map, range } from "../src"; describe("map", () => { const identity = (t: T): T => t; diff --git a/packages/transducers/test/pad-last.ts b/packages/transducers/test/pad-last.ts index ba812adc80..37f03f6d6e 100644 --- a/packages/transducers/test/pad-last.ts +++ b/packages/transducers/test/pad-last.ts @@ -1,6 +1,5 @@ -import { padLast } from "../src"; - import * as assert from "assert"; +import { padLast } from "../src"; describe("padLast", () => { it("all", () => { diff --git a/packages/transducers/test/permutations.ts b/packages/transducers/test/permutations.ts index 8291394e93..15a7c007eb 100644 --- a/packages/transducers/test/permutations.ts +++ b/packages/transducers/test/permutations.ts @@ -1,10 +1,6 @@ import { swizzle } from "@thi.ng/arrays"; -import { permutations, permutationsN } from "../src/iter/permutations"; -import { range } from "../src/iter/range"; -import { iterator } from "../src/iterator"; -import { map } from "../src/xform/map"; - import * as assert from "assert"; +import { iterator, map, permutations, permutationsN, range } from "../src"; describe("permutations", () => { it("empty", () => { diff --git a/packages/transducers/test/range.ts b/packages/transducers/test/range.ts index b2a3dbea8e..1505ca288c 100644 --- a/packages/transducers/test/range.ts +++ b/packages/transducers/test/range.ts @@ -1,7 +1,5 @@ -import { range2d } from "../src/iter/range2d"; - import * as assert from "assert"; -import { rangeNd } from "../src"; +import { range2d, rangeNd } from "../src"; describe("range2d", () => { it("forward", () => { diff --git a/packages/transducers/test/take.ts b/packages/transducers/test/take.ts index 23b66e2a23..fa1dc9d3b2 100644 --- a/packages/transducers/test/take.ts +++ b/packages/transducers/test/take.ts @@ -1,6 +1,5 @@ -import { take, range } from "../src"; - import * as assert from "assert"; +import { range, take } from "../src"; describe("take", () => { it("iterates up to N items", () => { diff --git a/packages/unionstruct/test/index.ts b/packages/unionstruct/test/index.ts index 9012871868..d9d25532f3 100644 --- a/packages/unionstruct/test/index.ts +++ b/packages/unionstruct/test/index.ts @@ -1,5 +1,5 @@ -import { Field, union, struct } from "../src/index"; import * as assert from "assert"; +import { Field, struct, union } from "../src"; describe("nested struct + union", () => { let i = [ diff --git a/packages/vectors/test/index.ts b/packages/vectors/test/index.ts index d099875f10..e1c54153e0 100644 --- a/packages/vectors/test/index.ts +++ b/packages/vectors/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as v from "../src/index"; +// import * as v from "../src"; describe("vectors", () => { it("tests pending"); diff --git a/packages/webgl-msdf/test/index.ts b/packages/webgl-msdf/test/index.ts index 908abfd690..f52d307846 100644 --- a/packages/webgl-msdf/test/index.ts +++ b/packages/webgl-msdf/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as wm from "../src/index"; +// import * as wm from "../src"; describe("webgl-msdf", () => { it("tests pending"); diff --git a/packages/webgl-shadertoy/test/index.ts b/packages/webgl-shadertoy/test/index.ts index 294a59348c..15a0ec2742 100644 --- a/packages/webgl-shadertoy/test/index.ts +++ b/packages/webgl-shadertoy/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as ws from "../src/index"; +// import * as ws from "../src"; describe("webgl-shadertoy", () => { it("tests pending"); diff --git a/packages/webgl/test/index.ts b/packages/webgl/test/index.ts index b4b0d407d2..74ab640c4c 100644 --- a/packages/webgl/test/index.ts +++ b/packages/webgl/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as w from "../src/index"; +// import * as w from "../src"; describe("webgl", () => { it("tests pending"); From b8e96ccb7ebef2e5e519a7e8725dca801724a766 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:57:29 +0000 Subject: [PATCH 46/71] refactor(geom): update type-only imports --- packages/geom/src/ctors/aabb.ts | 4 ++-- packages/geom/src/ctors/arc.ts | 4 ++-- packages/geom/src/ctors/circle.ts | 2 +- packages/geom/src/ctors/cubic.ts | 6 +++--- packages/geom/src/ctors/ellipse.ts | 4 ++-- packages/geom/src/ctors/group.ts | 2 +- packages/geom/src/ctors/line.ts | 4 ++-- packages/geom/src/ctors/path.ts | 2 +- packages/geom/src/ctors/plane.ts | 2 +- packages/geom/src/ctors/points.ts | 2 +- packages/geom/src/ctors/polygon.ts | 2 +- packages/geom/src/ctors/polyline.ts | 2 +- packages/geom/src/ctors/quad.ts | 4 ++-- packages/geom/src/ctors/rect.ts | 4 ++-- packages/geom/src/ctors/text.ts | 2 +- packages/geom/src/ops/arc-length.ts | 16 +++++++-------- packages/geom/src/ops/area.ts | 20 +++++++++---------- packages/geom/src/ops/as-cubic.ts | 18 ++++++++--------- packages/geom/src/ops/as-polyline.ts | 4 ++-- packages/geom/src/ops/bounds.ts | 18 ++++++++--------- packages/geom/src/ops/centroid.ts | 12 +++++------ packages/geom/src/ops/classify-point.ts | 8 ++++---- packages/geom/src/ops/clip-convex.ts | 2 +- packages/geom/src/ops/closest-point.ts | 18 ++++++++--------- packages/geom/src/ops/convex-hull.ts | 2 +- packages/geom/src/ops/edges.ts | 8 ++++---- packages/geom/src/ops/fit-into-bounds.ts | 2 +- packages/geom/src/ops/flip.ts | 8 ++++---- packages/geom/src/ops/intersects.ts | 14 ++++++------- packages/geom/src/ops/map-point.ts | 2 +- packages/geom/src/ops/offset.ts | 4 ++-- packages/geom/src/ops/point-at.ts | 18 ++++++++--------- packages/geom/src/ops/point-inside.ts | 14 ++++++------- packages/geom/src/ops/tangent-at.ts | 4 ++-- packages/geom/src/ops/transform-vertices.ts | 4 ++-- packages/geom/src/ops/transform.ts | 2 +- packages/geom/src/ops/translate.ts | 2 +- packages/geom/src/ops/unmap-point.ts | 4 ++-- packages/geom/src/ops/vertices.ts | 22 ++++++++++----------- packages/geom/src/ops/volume.ts | 4 ++-- 40 files changed, 138 insertions(+), 138 deletions(-) diff --git a/packages/geom/src/ctors/aabb.ts b/packages/geom/src/ctors/aabb.ts index 5b5e0b7be8..b05ed75cee 100644 --- a/packages/geom/src/ctors/aabb.ts +++ b/packages/geom/src/ctors/aabb.ts @@ -1,3 +1,4 @@ +import type { Attribs } from "@thi.ng/geom-api"; import { SQRT2_2 } from "@thi.ng/math"; import { add3, @@ -10,9 +11,8 @@ import { ZERO3, } from "@thi.ng/vectors"; import { AABB } from "../api/aabb"; -import { Sphere } from "../api/sphere"; +import type { Sphere } from "../api/sphere"; import { argsVV } from "../internal/args"; -import type { Attribs } from "@thi.ng/geom-api"; export function aabb(pos: Vec, size: number | Vec, attribs?: Attribs): AABB; export function aabb(size: number | Vec, attribs?: Attribs): AABB; diff --git a/packages/geom/src/ctors/arc.ts b/packages/geom/src/ctors/arc.ts index a051ba0b30..45e18c837d 100644 --- a/packages/geom/src/ctors/arc.ts +++ b/packages/geom/src/ctors/arc.ts @@ -1,8 +1,8 @@ import { isNumber } from "@thi.ng/checks"; -import { fromEndPoints } from "@thi.ng/geom-arc"; -import { Arc } from "../api/arc"; import type { Attribs } from "@thi.ng/geom-api"; +import { fromEndPoints } from "@thi.ng/geom-arc"; import type { ReadonlyVec, Vec } from "@thi.ng/vectors"; +import { Arc } from "../api/arc"; export const arc = ( pos: Vec, diff --git a/packages/geom/src/ctors/circle.ts b/packages/geom/src/ctors/circle.ts index 25d0a954ea..2880238e22 100644 --- a/packages/geom/src/ctors/circle.ts +++ b/packages/geom/src/ctors/circle.ts @@ -1,8 +1,8 @@ +import type { Attribs } from "@thi.ng/geom-api"; import { circumCenter2 } from "@thi.ng/geom-poly-utils"; import { dist, mixN2, ReadonlyVec, Vec } from "@thi.ng/vectors"; import { Circle } from "../api/circle"; import { argsVN } from "../internal/args"; -import type { Attribs } from "@thi.ng/geom-api"; export function circle(pos: Vec, r: number, attribs?: Attribs): Circle; export function circle(pos: Vec, attribs?: Attribs): Circle; diff --git a/packages/geom/src/ctors/cubic.ts b/packages/geom/src/ctors/cubic.ts index 29941e6217..aaa8e4a575 100644 --- a/packages/geom/src/ctors/cubic.ts +++ b/packages/geom/src/ctors/cubic.ts @@ -1,14 +1,14 @@ +import type { Attribs } from "@thi.ng/geom-api"; import { cubicFromArc as _arc, cubicFromLine as _line, cubicFromQuadratic as _quad, } from "@thi.ng/geom-splines"; -import { Arc } from "../api/arc"; +import type { Vec } from "@thi.ng/vectors"; +import type { Arc } from "../api/arc"; import { Cubic } from "../api/cubic"; import { copyAttribs } from "../internal/copy-attribs"; import { pclike } from "../internal/pclike"; -import type { Attribs } from "@thi.ng/geom-api"; -import type { Vec } from "@thi.ng/vectors"; export function cubic(a: Vec, b: Vec, c: Vec, d: Vec, attribs?: Attribs): Cubic; export function cubic(pts: Vec[], attribs?: Attribs): Cubic; diff --git a/packages/geom/src/ctors/ellipse.ts b/packages/geom/src/ctors/ellipse.ts index f66b1290f9..55755c7629 100644 --- a/packages/geom/src/ctors/ellipse.ts +++ b/packages/geom/src/ctors/ellipse.ts @@ -1,7 +1,7 @@ -import { Ellipse } from "../api/ellipse"; -import { argsVV } from "../internal/args"; import type { Attribs } from "@thi.ng/geom-api"; import type { Vec } from "@thi.ng/vectors"; +import { Ellipse } from "../api/ellipse"; +import { argsVV } from "../internal/args"; export function ellipse(pos: Vec, r: number | Vec, attribs?: Attribs): Ellipse; export function ellipse(r: number | Vec, attribs?: Attribs): Ellipse; diff --git a/packages/geom/src/ctors/group.ts b/packages/geom/src/ctors/group.ts index 11c809e4d8..60a69d1f9d 100644 --- a/packages/geom/src/ctors/group.ts +++ b/packages/geom/src/ctors/group.ts @@ -1,5 +1,5 @@ -import { Group } from "../api/group"; import type { Attribs, IHiccupShape } from "@thi.ng/geom-api"; +import { Group } from "../api/group"; export const group = (attribs: Attribs = {}, children?: IHiccupShape[]) => new Group(attribs, children); diff --git a/packages/geom/src/ctors/line.ts b/packages/geom/src/ctors/line.ts index af3a3c9fa9..a70fc2f838 100644 --- a/packages/geom/src/ctors/line.ts +++ b/packages/geom/src/ctors/line.ts @@ -1,9 +1,9 @@ +import type { Attribs } from "@thi.ng/geom-api"; import { liangBarsky2 } from "@thi.ng/geom-clip-line"; +import type { Vec, VecPair } from "@thi.ng/vectors"; import { Line } from "../api/line"; import { Rect } from "../api/rect"; import { pclike } from "../internal/pclike"; -import type { Attribs } from "@thi.ng/geom-api"; -import type { Vec, VecPair } from "@thi.ng/vectors"; export function line(a: Vec, b: Vec, attribs?: Attribs): Line; export function line(pts: Vec[], attribs?: Attribs): Line; diff --git a/packages/geom/src/ctors/path.ts b/packages/geom/src/ctors/path.ts index 1c7e6384e6..6bce927ad1 100644 --- a/packages/geom/src/ctors/path.ts +++ b/packages/geom/src/ctors/path.ts @@ -2,7 +2,7 @@ import { isNumber } from "@thi.ng/checks"; import { Attribs, PathSegment, SegmentType } from "@thi.ng/geom-api"; import { map, mapcat } from "@thi.ng/transducers"; import { maddN2, Vec } from "@thi.ng/vectors"; -import { Cubic } from "../api/cubic"; +import type { Cubic } from "../api/cubic"; import { Path } from "../api/path"; import { asCubic } from "../ops/as-cubic"; import { PathBuilder } from "./path-builder"; diff --git a/packages/geom/src/ctors/plane.ts b/packages/geom/src/ctors/plane.ts index 3a1c7dc50f..80bdb732f8 100644 --- a/packages/geom/src/ctors/plane.ts +++ b/packages/geom/src/ctors/plane.ts @@ -1,3 +1,4 @@ +import type { Attribs } from "@thi.ng/geom-api"; import { dot3, normalize, @@ -6,7 +7,6 @@ import { Vec, } from "@thi.ng/vectors"; import { Plane } from "../api/plane"; -import type { Attribs } from "@thi.ng/geom-api"; export const plane = (normal: Vec, w: number, attribs?: Attribs) => new Plane(normalize(null, normal), w, attribs); diff --git a/packages/geom/src/ctors/points.ts b/packages/geom/src/ctors/points.ts index a522183336..e29a634c78 100644 --- a/packages/geom/src/ctors/points.ts +++ b/packages/geom/src/ctors/points.ts @@ -1,6 +1,6 @@ -import { Points, Points3 } from "../api/points"; import type { Attribs } from "@thi.ng/geom-api"; import type { Vec } from "@thi.ng/vectors"; +import { Points, Points3 } from "../api/points"; export const points = (pts?: Vec[], attribs?: Attribs) => new Points(pts, attribs); diff --git a/packages/geom/src/ctors/polygon.ts b/packages/geom/src/ctors/polygon.ts index 425941f475..d9c5c647b9 100644 --- a/packages/geom/src/ctors/polygon.ts +++ b/packages/geom/src/ctors/polygon.ts @@ -1,3 +1,4 @@ +import type { Attribs } from "@thi.ng/geom-api"; import { TAU } from "@thi.ng/math"; import { cycle, @@ -9,7 +10,6 @@ import { } from "@thi.ng/transducers"; import { cartesian2, Vec } from "@thi.ng/vectors"; import { Polygon } from "../api/polygon"; -import type { Attribs } from "@thi.ng/geom-api"; export const polygon = (pts: Vec[], attribs?: Attribs) => new Polygon(pts, attribs); diff --git a/packages/geom/src/ctors/polyline.ts b/packages/geom/src/ctors/polyline.ts index dd6c8733f3..4b6f4a8b14 100644 --- a/packages/geom/src/ctors/polyline.ts +++ b/packages/geom/src/ctors/polyline.ts @@ -1,6 +1,6 @@ -import { Polyline } from "../api/polyline"; import type { Attribs } from "@thi.ng/geom-api"; import type { Vec } from "@thi.ng/vectors"; +import { Polyline } from "../api/polyline"; export const polyline = (pts: Vec[], attribs?: Attribs) => new Polyline(pts, attribs); diff --git a/packages/geom/src/ctors/quad.ts b/packages/geom/src/ctors/quad.ts index e8791e1802..2e9bec718d 100644 --- a/packages/geom/src/ctors/quad.ts +++ b/packages/geom/src/ctors/quad.ts @@ -1,13 +1,13 @@ import { isNumber } from "@thi.ng/checks"; +import type { Attribs } from "@thi.ng/geom-api"; import { closestPointPlane } from "@thi.ng/geom-closest-point"; import { alignmentQuat, mulVQ } from "@thi.ng/matrices"; import { add3, ReadonlyVec, Vec, Z3 } from "@thi.ng/vectors"; -import { Plane } from "../api/plane"; +import type { Plane } from "../api/plane"; import { Quad } from "../api/quad"; import { Quad3 } from "../api/quad3"; import { argAttribs } from "../internal/args"; import { pclike } from "../internal/pclike"; -import type { Attribs } from "@thi.ng/geom-api"; export function quad(a: Vec, b: Vec, c: Vec, d: Vec, attribs?: Attribs): Quad; export function quad(pts: Vec[], attribs?: Attribs): Quad; diff --git a/packages/geom/src/ctors/rect.ts b/packages/geom/src/ctors/rect.ts index b9b42a6715..390ff8703e 100644 --- a/packages/geom/src/ctors/rect.ts +++ b/packages/geom/src/ctors/rect.ts @@ -13,8 +13,8 @@ import { Vec, ZERO2, } from "@thi.ng/vectors"; -import { Circle } from "../api/circle"; -import { Polygon } from "../api/polygon"; +import type { Circle } from "../api/circle"; +import type { Polygon } from "../api/polygon"; import { Rect } from "../api/rect"; import { argsVV } from "../internal/args"; diff --git a/packages/geom/src/ctors/text.ts b/packages/geom/src/ctors/text.ts index 2d0b9711b7..4a8a219a0b 100644 --- a/packages/geom/src/ctors/text.ts +++ b/packages/geom/src/ctors/text.ts @@ -1,5 +1,5 @@ import type { Attribs } from "@thi.ng/geom-api"; -import { Vec } from "@thi.ng/vectors"; +import type { Vec } from "@thi.ng/vectors"; import { Text } from "../api/text"; export const text = (pos: Vec, body: any, attribs?: Attribs) => diff --git a/packages/geom/src/ops/arc-length.ts b/packages/geom/src/ops/arc-length.ts index b3ebf75cdb..5e0e1f9516 100644 --- a/packages/geom/src/ops/arc-length.ts +++ b/packages/geom/src/ops/arc-length.ts @@ -1,17 +1,17 @@ +import type { IObjectOf } from "@thi.ng/api"; import { defmulti, Implementation1 } from "@thi.ng/defmulti"; import { IShape, Type } from "@thi.ng/geom-api"; import { perimeter } from "@thi.ng/geom-poly-utils"; import { PI, TAU } from "@thi.ng/math"; import { dist } from "@thi.ng/vectors"; -import { Circle } from "../api/circle"; -import { Ellipse } from "../api/ellipse"; -import { Group } from "../api/group"; -import { Line } from "../api/line"; -import { Polygon } from "../api/polygon"; -import { Rect } from "../api/rect"; -import { Triangle } from "../api/triangle"; +import type { Circle } from "../api/circle"; +import type { Ellipse } from "../api/ellipse"; +import type { Group } from "../api/group"; +import type { Line } from "../api/line"; +import type { Polygon } from "../api/polygon"; +import type { Rect } from "../api/rect"; +import type { Triangle } from "../api/triangle"; import { dispatch } from "../internal/dispatch"; -import type { IObjectOf } from "@thi.ng/api"; /** * Returns the arc length / perimeter / circumference of the given diff --git a/packages/geom/src/ops/area.ts b/packages/geom/src/ops/area.ts index d00393b8de..834ee00e86 100644 --- a/packages/geom/src/ops/area.ts +++ b/packages/geom/src/ops/area.ts @@ -1,3 +1,4 @@ +import type { IObjectOf } from "@thi.ng/api"; import { DEFAULT, defmulti, @@ -8,17 +9,16 @@ import { IShape, Type } from "@thi.ng/geom-api"; import { polyArea2 } from "@thi.ng/geom-poly-utils"; import { PI } from "@thi.ng/math"; import { signedArea2, Vec } from "@thi.ng/vectors"; -import { AABB } from "../api/aabb"; -import { Arc } from "../api/arc"; -import { Circle } from "../api/circle"; -import { Ellipse } from "../api/ellipse"; -import { Group } from "../api/group"; -import { Polygon } from "../api/polygon"; -import { Rect } from "../api/rect"; -import { Sphere } from "../api/sphere"; -import { Triangle } from "../api/triangle"; +import type { AABB } from "../api/aabb"; +import type { Arc } from "../api/arc"; +import type { Circle } from "../api/circle"; +import type { Ellipse } from "../api/ellipse"; +import type { Group } from "../api/group"; +import type { Polygon } from "../api/polygon"; +import type { Rect } from "../api/rect"; +import type { Sphere } from "../api/sphere"; +import type { Triangle } from "../api/triangle"; import { dispatch } from "../internal/dispatch"; -import type { IObjectOf } from "@thi.ng/api"; /** * Returns the possibly signed (unsigned by default) surface area of given diff --git a/packages/geom/src/ops/as-cubic.ts b/packages/geom/src/ops/as-cubic.ts index 91e89afaea..ca6f69b397 100644 --- a/packages/geom/src/ops/as-cubic.ts +++ b/packages/geom/src/ops/as-cubic.ts @@ -9,16 +9,16 @@ import { } from "@thi.ng/geom-splines"; import { TAU } from "@thi.ng/math"; import { mapcat } from "@thi.ng/transducers"; -import { ReadonlyVec, Vec } from "@thi.ng/vectors"; -import { Circle } from "../api/circle"; +import type { ReadonlyVec, Vec } from "@thi.ng/vectors"; +import type { Circle } from "../api/circle"; import { Cubic } from "../api/cubic"; -import { Group } from "../api/group"; -import { Line } from "../api/line"; -import { Path } from "../api/path"; -import { Polygon } from "../api/polygon"; -import { Polyline } from "../api/polyline"; -import { Quadratic } from "../api/quadratic"; -import { Rect } from "../api/rect"; +import type { Group } from "../api/group"; +import type { Line } from "../api/line"; +import type { Path } from "../api/path"; +import type { Polygon } from "../api/polygon"; +import type { Polyline } from "../api/polyline"; +import type { Quadratic } from "../api/quadratic"; +import type { Rect } from "../api/rect"; import { arc } from "../ctors/arc"; import { cubicFromArc, diff --git a/packages/geom/src/ops/as-polyline.ts b/packages/geom/src/ops/as-polyline.ts index 7dc8045e2a..a46c8c4738 100644 --- a/packages/geom/src/ops/as-polyline.ts +++ b/packages/geom/src/ops/as-polyline.ts @@ -2,8 +2,8 @@ import type { IObjectOf } from "@thi.ng/api"; import { defmulti, Implementation1O, MultiFn1O } from "@thi.ng/defmulti"; import { IShape, SamplingOpts, Type } from "@thi.ng/geom-api"; import { set } from "@thi.ng/vectors"; -import { Cubic } from "../api/cubic"; -import { Path } from "../api/path"; +import type { Cubic } from "../api/cubic"; +import type { Path } from "../api/path"; import { Polyline } from "../api/polyline"; import { copyAttribs } from "../internal/copy-attribs"; import { dispatch } from "../internal/dispatch"; diff --git a/packages/geom/src/ops/bounds.ts b/packages/geom/src/ops/bounds.ts index f224c42c77..8af33d660a 100644 --- a/packages/geom/src/ops/bounds.ts +++ b/packages/geom/src/ops/bounds.ts @@ -19,16 +19,16 @@ import { sub2, subN2, } from "@thi.ng/vectors"; -import { Arc } from "../api/arc"; -import { Circle } from "../api/circle"; -import { Cubic } from "../api/cubic"; -import { Ellipse } from "../api/ellipse"; -import { Group } from "../api/group"; -import { Line } from "../api/line"; -import { Path } from "../api/path"; -import { Quadratic } from "../api/quadratic"; +import type { Arc } from "../api/arc"; +import type { Circle } from "../api/circle"; +import type { Cubic } from "../api/cubic"; +import type { Ellipse } from "../api/ellipse"; +import type { Group } from "../api/group"; +import type { Line } from "../api/line"; +import type { Path } from "../api/path"; +import type { Quadratic } from "../api/quadratic"; import { Rect } from "../api/rect"; -import { Text } from "../api/text"; +import type { Text } from "../api/text"; import { aabbFromMinMax } from "../ctors/aabb"; import { rectFromMinMax } from "../ctors/rect"; import { collBounds } from "../internal/coll-bounds"; diff --git a/packages/geom/src/ops/centroid.ts b/packages/geom/src/ops/centroid.ts index 32229002db..c190d392ba 100644 --- a/packages/geom/src/ops/centroid.ts +++ b/packages/geom/src/ops/centroid.ts @@ -6,12 +6,12 @@ import { centroid as _centroid, } from "@thi.ng/geom-poly-utils"; import { add, divN, maddN, mixN, mulN, set, Vec } from "@thi.ng/vectors"; -import { Circle } from "../api/circle"; -import { Group } from "../api/group"; -import { Line } from "../api/line"; -import { Plane } from "../api/plane"; -import { Polygon } from "../api/polygon"; -import { Triangle } from "../api/triangle"; +import type { Circle } from "../api/circle"; +import type { Group } from "../api/group"; +import type { Line } from "../api/line"; +import type { Plane } from "../api/plane"; +import type { Polygon } from "../api/polygon"; +import type { Triangle } from "../api/triangle"; import { dispatch } from "../internal/dispatch"; import { bounds } from "./bounds"; diff --git a/packages/geom/src/ops/classify-point.ts b/packages/geom/src/ops/classify-point.ts index 7081a3b7dd..d0528a7333 100644 --- a/packages/geom/src/ops/classify-point.ts +++ b/packages/geom/src/ops/classify-point.ts @@ -1,3 +1,4 @@ +import type { IObjectOf } from "@thi.ng/api"; import { defmulti, Implementation2O, MultiFn2O } from "@thi.ng/defmulti"; import { IShape, Type } from "@thi.ng/geom-api"; import { @@ -6,11 +7,10 @@ import { } from "@thi.ng/geom-isec"; import { EPS, sign } from "@thi.ng/math"; import { dot, ReadonlyVec } from "@thi.ng/vectors"; -import { Circle } from "../api/circle"; -import { Plane } from "../api/plane"; -import { Triangle } from "../api/triangle"; +import type { Circle } from "../api/circle"; +import type { Plane } from "../api/plane"; +import type { Triangle } from "../api/triangle"; import { dispatch } from "../internal/dispatch"; -import type { IObjectOf } from "@thi.ng/api"; export const classifyPoint: MultiFn2O< IShape, diff --git a/packages/geom/src/ops/clip-convex.ts b/packages/geom/src/ops/clip-convex.ts index b6de41193c..33febaea68 100644 --- a/packages/geom/src/ops/clip-convex.ts +++ b/packages/geom/src/ops/clip-convex.ts @@ -4,7 +4,7 @@ import { IHiccupShape, IShape, Type } from "@thi.ng/geom-api"; import { clipLineSegmentPoly } from "@thi.ng/geom-clip-line"; import { sutherlandHodgeman } from "@thi.ng/geom-clip-poly"; import { centroid } from "@thi.ng/geom-poly-utils"; -import { ReadonlyVec } from "@thi.ng/vectors"; +import type { ReadonlyVec } from "@thi.ng/vectors"; import { Group } from "../api/group"; import { Line } from "../api/line"; import { Polygon } from "../api/polygon"; diff --git a/packages/geom/src/ops/closest-point.ts b/packages/geom/src/ops/closest-point.ts index 9d3a8e2dae..ff2f718c6f 100644 --- a/packages/geom/src/ops/closest-point.ts +++ b/packages/geom/src/ops/closest-point.ts @@ -1,3 +1,4 @@ +import type { IObjectOf } from "@thi.ng/api"; import { defmulti, Implementation2O, MultiFn2O } from "@thi.ng/defmulti"; import { IShape, PCLike, Type } from "@thi.ng/geom-api"; import { closestPoint as closestPointArc } from "@thi.ng/geom-arc"; @@ -12,16 +13,15 @@ import { } from "@thi.ng/geom-closest-point"; import { closestPointCubic, closestPointQuadratic } from "@thi.ng/geom-splines"; import { add2, add3, ReadonlyVec, Vec } from "@thi.ng/vectors"; -import { AABB } from "../api/aabb"; -import { Arc } from "../api/arc"; -import { Circle } from "../api/circle"; -import { Cubic } from "../api/cubic"; -import { Line } from "../api/line"; -import { Plane } from "../api/plane"; -import { Quadratic } from "../api/quadratic"; -import { Rect } from "../api/rect"; +import type { AABB } from "../api/aabb"; +import type { Arc } from "../api/arc"; +import type { Circle } from "../api/circle"; +import type { Cubic } from "../api/cubic"; +import type { Line } from "../api/line"; +import type { Plane } from "../api/plane"; +import type { Quadratic } from "../api/quadratic"; +import type { Rect } from "../api/rect"; import { dispatch } from "../internal/dispatch"; -import type { IObjectOf } from "@thi.ng/api"; export const closestPoint: MultiFn2O< IShape, diff --git a/packages/geom/src/ops/convex-hull.ts b/packages/geom/src/ops/convex-hull.ts index 4031011190..654d9b41b2 100644 --- a/packages/geom/src/ops/convex-hull.ts +++ b/packages/geom/src/ops/convex-hull.ts @@ -1,3 +1,4 @@ +import type { IObjectOf } from "@thi.ng/api"; import { defmulti, Implementation1 } from "@thi.ng/defmulti"; import { IShape, PCLike, Type } from "@thi.ng/geom-api"; import { grahamScan2 } from "@thi.ng/geom-hull"; @@ -5,7 +6,6 @@ import { Polygon } from "../api/polygon"; import { copyAttribs } from "../internal/copy-attribs"; import { dispatch } from "../internal/dispatch"; import { vertices } from "./vertices"; -import type { IObjectOf } from "@thi.ng/api"; export const convexHull = defmulti(dispatch); diff --git a/packages/geom/src/ops/edges.ts b/packages/geom/src/ops/edges.ts index 9d518eaa13..911c6c0ec1 100644 --- a/packages/geom/src/ops/edges.ts +++ b/packages/geom/src/ops/edges.ts @@ -1,9 +1,9 @@ import { defmulti, Implementation1O, MultiFn1O } from "@thi.ng/defmulti"; import { IShape, SamplingOpts, Type } from "@thi.ng/geom-api"; -import { AABB } from "../api/aabb"; -import { Polygon } from "../api/polygon"; -import { Polyline } from "../api/polyline"; -import { Rect } from "../api/rect"; +import type { AABB } from "../api/aabb"; +import type { Polygon } from "../api/polygon"; +import type { Polyline } from "../api/polyline"; +import type { Rect } from "../api/rect"; import { dispatch } from "../internal/dispatch"; import { edgeIterator } from "../internal/edges"; import { vertices } from "./vertices"; diff --git a/packages/geom/src/ops/fit-into-bounds.ts b/packages/geom/src/ops/fit-into-bounds.ts index 926e5ca0ab..24175a6821 100644 --- a/packages/geom/src/ops/fit-into-bounds.ts +++ b/packages/geom/src/ops/fit-into-bounds.ts @@ -10,7 +10,7 @@ import { translation44, } from "@thi.ng/matrices"; import { neg, ReadonlyVec, Vec } from "@thi.ng/vectors"; -import { AABB } from "../api/aabb"; +import type { AABB } from "../api/aabb"; import { Rect } from "../api/rect"; import { collBounds } from "../internal/coll-bounds"; import { bounds } from "./bounds"; diff --git a/packages/geom/src/ops/flip.ts b/packages/geom/src/ops/flip.ts index f18e22a3a0..85ee3e9e5c 100644 --- a/packages/geom/src/ops/flip.ts +++ b/packages/geom/src/ops/flip.ts @@ -1,10 +1,10 @@ import { DEFAULT, defmulti, Implementation1 } from "@thi.ng/defmulti"; import { IShape, PCLike, Type } from "@thi.ng/geom-api"; import { neg } from "@thi.ng/vectors"; -import { Arc } from "../api/arc"; -import { Group } from "../api/group"; -import { Path } from "../api/path"; -import { Ray } from "../api/ray"; +import type { Arc } from "../api/arc"; +import type { Group } from "../api/group"; +import type { Path } from "../api/path"; +import type { Ray } from "../api/ray"; import { dispatch } from "../internal/dispatch"; import type { IObjectOf } from "@thi.ng/api"; diff --git a/packages/geom/src/ops/intersects.ts b/packages/geom/src/ops/intersects.ts index 97aa2e9332..538cbe3bbc 100644 --- a/packages/geom/src/ops/intersects.ts +++ b/packages/geom/src/ops/intersects.ts @@ -18,13 +18,13 @@ import { testRectCircle, testRectRect, } from "@thi.ng/geom-isec"; -import { AABB } from "../api/aabb"; -import { Circle } from "../api/circle"; -import { Line } from "../api/line"; -import { Plane } from "../api/plane"; -import { Ray } from "../api/ray"; -import { Rect } from "../api/rect"; -import { Sphere } from "../api/sphere"; +import type { AABB } from "../api/aabb"; +import type { Circle } from "../api/circle"; +import type { Line } from "../api/line"; +import type { Plane } from "../api/plane"; +import type { Ray } from "../api/ray"; +import type { Rect } from "../api/rect"; +import type { Sphere } from "../api/sphere"; import { dispatch2 } from "../internal/dispatch"; import type { IObjectOf } from "@thi.ng/api"; diff --git a/packages/geom/src/ops/map-point.ts b/packages/geom/src/ops/map-point.ts index 78839bb878..f92ebeca4f 100644 --- a/packages/geom/src/ops/map-point.ts +++ b/packages/geom/src/ops/map-point.ts @@ -1,7 +1,7 @@ import { defmulti, Implementation2O, MultiFn2O } from "@thi.ng/defmulti"; import { IShape, Type } from "@thi.ng/geom-api"; import { div, ReadonlyVec, sub, Vec } from "@thi.ng/vectors"; -import { Rect } from "../api/rect"; +import type { Rect } from "../api/rect"; import { dispatch } from "../internal/dispatch"; import type { IObjectOf } from "@thi.ng/api"; diff --git a/packages/geom/src/ops/offset.ts b/packages/geom/src/ops/offset.ts index a4c1aa9acf..d75deba4db 100644 --- a/packages/geom/src/ops/offset.ts +++ b/packages/geom/src/ops/offset.ts @@ -11,9 +11,9 @@ import { ZERO2, } from "@thi.ng/vectors"; import { Circle } from "../api/circle"; -import { Line } from "../api/line"; +import type { Line } from "../api/line"; import { Quad } from "../api/quad"; -import { Rect } from "../api/rect"; +import type { Rect } from "../api/rect"; import { rectFromCentroid } from "../ctors/rect"; import { copyAttribs } from "../internal/copy-attribs"; import { dispatch } from "../internal/dispatch"; diff --git a/packages/geom/src/ops/point-at.ts b/packages/geom/src/ops/point-at.ts index b93c6ce385..5a10a56f1e 100644 --- a/packages/geom/src/ops/point-at.ts +++ b/packages/geom/src/ops/point-at.ts @@ -13,15 +13,15 @@ import { pointOnRay3, Vec, } from "@thi.ng/vectors"; -import { Arc } from "../api/arc"; -import { Circle } from "../api/circle"; -import { Cubic } from "../api/cubic"; -import { Ellipse } from "../api/ellipse"; -import { Line } from "../api/line"; -import { Polygon } from "../api/polygon"; -import { Quadratic } from "../api/quadratic"; -import { Ray } from "../api/ray"; -import { Rect } from "../api/rect"; +import type { Arc } from "../api/arc"; +import type { Circle } from "../api/circle"; +import type { Cubic } from "../api/cubic"; +import type { Ellipse } from "../api/ellipse"; +import type { Line } from "../api/line"; +import type { Polygon } from "../api/polygon"; +import type { Quadratic } from "../api/quadratic"; +import type { Ray } from "../api/ray"; +import type { Rect } from "../api/rect"; import { dispatch } from "../internal/dispatch"; import { vertices } from "./vertices"; diff --git a/packages/geom/src/ops/point-inside.ts b/packages/geom/src/ops/point-inside.ts index 6f6bb09488..a4ebf63379 100644 --- a/packages/geom/src/ops/point-inside.ts +++ b/packages/geom/src/ops/point-inside.ts @@ -9,13 +9,13 @@ import { pointInTriangle2, } from "@thi.ng/geom-isec"; import { isInArray, ReadonlyVec, Vec } from "@thi.ng/vectors"; -import { AABB } from "../api/aabb"; -import { Circle } from "../api/circle"; -import { Line } from "../api/line"; -import { Points } from "../api/points"; -import { Polygon } from "../api/polygon"; -import { Rect } from "../api/rect"; -import { Triangle } from "../api/triangle"; +import type { AABB } from "../api/aabb"; +import type { Circle } from "../api/circle"; +import type { Line } from "../api/line"; +import type { Points } from "../api/points"; +import type { Polygon } from "../api/polygon"; +import type { Rect } from "../api/rect"; +import type { Triangle } from "../api/triangle"; import { dispatch } from "../internal/dispatch"; import type { IObjectOf } from "@thi.ng/api"; diff --git a/packages/geom/src/ops/tangent-at.ts b/packages/geom/src/ops/tangent-at.ts index 7e3a9260f1..4a8b9eb90f 100644 --- a/packages/geom/src/ops/tangent-at.ts +++ b/packages/geom/src/ops/tangent-at.ts @@ -3,8 +3,8 @@ import { IShape, PCLike, Type } from "@thi.ng/geom-api"; import { Sampler } from "@thi.ng/geom-resample"; import { cossin, HALF_PI, TAU } from "@thi.ng/math"; import { direction, Vec } from "@thi.ng/vectors"; -import { Line } from "../api/line"; -import { Rect } from "../api/rect"; +import type { Line } from "../api/line"; +import type { Rect } from "../api/rect"; import { dispatch } from "../internal/dispatch"; import { vertices } from "./vertices"; import type { IObjectOf } from "@thi.ng/api"; diff --git a/packages/geom/src/ops/transform-vertices.ts b/packages/geom/src/ops/transform-vertices.ts index 0c7dec3fa4..0a971a1d38 100644 --- a/packages/geom/src/ops/transform-vertices.ts +++ b/packages/geom/src/ops/transform-vertices.ts @@ -9,7 +9,7 @@ import { } from "@thi.ng/geom-api"; import { mulV, ReadonlyMat } from "@thi.ng/matrices"; import { map } from "@thi.ng/transducers"; -import { ReadonlyVec } from "@thi.ng/vectors"; +import type { ReadonlyVec } from "@thi.ng/vectors"; import { Cubic } from "../api/cubic"; import { Group } from "../api/group"; import { Line } from "../api/line"; @@ -19,7 +19,7 @@ import { Polygon } from "../api/polygon"; import { Polyline } from "../api/polyline"; import { Quad } from "../api/quad"; import { Quadratic } from "../api/quadratic"; -import { Rect } from "../api/rect"; +import type { Rect } from "../api/rect"; import { Triangle } from "../api/triangle"; import { copyAttribs } from "../internal/copy-attribs"; import { dispatch } from "../internal/dispatch"; diff --git a/packages/geom/src/ops/transform.ts b/packages/geom/src/ops/transform.ts index e980e30575..9cf3006229 100644 --- a/packages/geom/src/ops/transform.ts +++ b/packages/geom/src/ops/transform.ts @@ -18,7 +18,7 @@ import { Polygon } from "../api/polygon"; import { Polyline } from "../api/polyline"; import { Quad } from "../api/quad"; import { Quadratic } from "../api/quadratic"; -import { Rect } from "../api/rect"; +import type { Rect } from "../api/rect"; import { Text } from "../api/text"; import { Triangle } from "../api/triangle"; import { copyAttribs } from "../internal/copy-attribs"; diff --git a/packages/geom/src/ops/translate.ts b/packages/geom/src/ops/translate.ts index fb5dbedcfa..e250ace0ea 100644 --- a/packages/geom/src/ops/translate.ts +++ b/packages/geom/src/ops/translate.ts @@ -3,7 +3,7 @@ import { defmulti, Implementation2 } from "@thi.ng/defmulti"; import { IHiccupShape, IShape, Type } from "@thi.ng/geom-api"; import { add2, add3, ReadonlyVec, set2, set3 } from "@thi.ng/vectors"; import { AABB } from "../api/aabb"; -import { Arc } from "../api/arc"; +import type { Arc } from "../api/arc"; import { Circle } from "../api/circle"; import { Cubic } from "../api/cubic"; import { Ellipse } from "../api/ellipse"; diff --git a/packages/geom/src/ops/unmap-point.ts b/packages/geom/src/ops/unmap-point.ts index 9bd812df71..188e74585c 100644 --- a/packages/geom/src/ops/unmap-point.ts +++ b/packages/geom/src/ops/unmap-point.ts @@ -1,8 +1,8 @@ import { defmulti, Implementation2O, MultiFn2O } from "@thi.ng/defmulti"; import { IShape, Type } from "@thi.ng/geom-api"; import { madd, mixBilinear, ReadonlyVec, Vec } from "@thi.ng/vectors"; -import { Quad } from "../api/quad"; -import { Rect } from "../api/rect"; +import type { Quad } from "../api/quad"; +import type { Rect } from "../api/rect"; import { dispatch } from "../internal/dispatch"; import type { IObjectOf } from "@thi.ng/api"; diff --git a/packages/geom/src/ops/vertices.ts b/packages/geom/src/ops/vertices.ts index 94d0bc3824..4bf095c2fd 100644 --- a/packages/geom/src/ops/vertices.ts +++ b/packages/geom/src/ops/vertices.ts @@ -7,18 +7,18 @@ import { resample } from "@thi.ng/geom-resample"; import { sampleCubic, sampleQuadratic } from "@thi.ng/geom-splines"; import { cossin, TAU } from "@thi.ng/math"; import { add2, add3, cartesian2, madd2, set2, Vec } from "@thi.ng/vectors"; -import { AABB } from "../api/aabb"; -import { Arc } from "../api/arc"; -import { Circle } from "../api/circle"; -import { Cubic } from "../api/cubic"; -import { Ellipse } from "../api/ellipse"; -import { Group } from "../api/group"; -import { Path } from "../api/path"; -import { Points } from "../api/points"; +import type { AABB } from "../api/aabb"; +import type { Arc } from "../api/arc"; +import type { Circle } from "../api/circle"; +import type { Cubic } from "../api/cubic"; +import type { Ellipse } from "../api/ellipse"; +import type { Group } from "../api/group"; +import type { Path } from "../api/path"; +import type { Points } from "../api/points"; import { Polygon } from "../api/polygon"; -import { Polyline } from "../api/polyline"; -import { Quadratic } from "../api/quadratic"; -import { Rect } from "../api/rect"; +import type { Polyline } from "../api/polyline"; +import type { Quadratic } from "../api/quadratic"; +import type { Rect } from "../api/rect"; import { dispatch } from "../internal/dispatch"; export const vertices: MultiFn1O< diff --git a/packages/geom/src/ops/volume.ts b/packages/geom/src/ops/volume.ts index c59acc06b3..664a917425 100644 --- a/packages/geom/src/ops/volume.ts +++ b/packages/geom/src/ops/volume.ts @@ -1,8 +1,8 @@ import { DEFAULT, defmulti, Implementation1 } from "@thi.ng/defmulti"; import { IShape, Type } from "@thi.ng/geom-api"; import { PI } from "@thi.ng/math"; -import { AABB } from "../api/aabb"; -import { Sphere } from "../api/sphere"; +import type { AABB } from "../api/aabb"; +import type { Sphere } from "../api/sphere"; import { dispatch } from "../internal/dispatch"; import type { IObjectOf } from "@thi.ng/api"; From 69eb928bfac7edea7ad8d0f4e4aab0d100ea4ffb Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:58:27 +0000 Subject: [PATCH 47/71] refactor(geom-fuzz): update type-only imports --- packages/geom-fuzz/src/api.ts | 2 +- packages/geom-fuzz/src/comp.ts | 2 +- packages/geom-fuzz/src/dots.ts | 2 +- packages/geom-fuzz/src/polygon.ts | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/geom-fuzz/src/api.ts b/packages/geom-fuzz/src/api.ts index 7804035763..c51f60005b 100644 --- a/packages/geom-fuzz/src/api.ts +++ b/packages/geom-fuzz/src/api.ts @@ -1,6 +1,6 @@ import type { Fn } from "@thi.ng/api"; import type { IColor } from "@thi.ng/color"; -import { Polygon } from "@thi.ng/geom"; +import type { Polygon } from "@thi.ng/geom"; import type { IHiccupShape } from "@thi.ng/geom-api"; export type Color = string | number[] | IColor; diff --git a/packages/geom-fuzz/src/comp.ts b/packages/geom-fuzz/src/comp.ts index c398a7ca1a..780fee75c4 100644 --- a/packages/geom-fuzz/src/comp.ts +++ b/packages/geom-fuzz/src/comp.ts @@ -1,5 +1,5 @@ import { group } from "@thi.ng/geom"; -import { FillFn } from "./api"; +import type { FillFn } from "./api"; export const compFill = (a: FillFn, b: FillFn): FillFn => (poly) => group({}, [a(poly), b(poly)]); diff --git a/packages/geom-fuzz/src/dots.ts b/packages/geom-fuzz/src/dots.ts index 1b14f25499..dd55b08480 100644 --- a/packages/geom-fuzz/src/dots.ts +++ b/packages/geom-fuzz/src/dots.ts @@ -2,7 +2,7 @@ import { mergeDeepObj } from "@thi.ng/associative"; import { bounds, pointInside, points, unmapPoint } from "@thi.ng/geom"; import { range2d } from "@thi.ng/transducers"; import { div2, jitter, Vec } from "@thi.ng/vectors"; -import { DotFillOpts, FillFn } from "./api"; +import type { DotFillOpts, FillFn } from "./api"; export const defDots = (opts: Partial = {}): FillFn => { opts = mergeDeepObj( diff --git a/packages/geom-fuzz/src/polygon.ts b/packages/geom-fuzz/src/polygon.ts index c384ebb049..78271d5402 100644 --- a/packages/geom-fuzz/src/polygon.ts +++ b/packages/geom-fuzz/src/polygon.ts @@ -1,6 +1,6 @@ import { asCubic, group, pathFromCubics, polygon } from "@thi.ng/geom"; -import { ReadonlyVec } from "@thi.ng/vectors"; -import { FuzzyPolygonOpts } from "./api"; +import type { ReadonlyVec } from "@thi.ng/vectors"; +import type { FuzzyPolygonOpts } from "./api"; import { jitterPoints } from "./points"; export const fuzzyPoly = ( From cd893cddd9ec529eaa0b58037ac1b3fbf74c5267 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 6 Dec 2020 23:59:16 +0000 Subject: [PATCH 48/71] refactor(geom-accel): update type-only imports --- packages/geom-accel/src/aspatial-grid.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/geom-accel/src/aspatial-grid.ts b/packages/geom-accel/src/aspatial-grid.ts index 9fa7ed6695..719cfc668b 100644 --- a/packages/geom-accel/src/aspatial-grid.ts +++ b/packages/geom-accel/src/aspatial-grid.ts @@ -1,6 +1,6 @@ import type { Fn, Nullable, Pair } from "@thi.ng/api"; import type { IRegionQuery, ISpatialMap } from "@thi.ng/geom-api"; -import { Heap } from "@thi.ng/heaps"; +import type { Heap } from "@thi.ng/heaps"; import { EPS } from "@thi.ng/math"; import { map } from "@thi.ng/transducers"; import { From dc88789ec15acfddb3f74ce0c5c6654b521d135f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:00:38 +0000 Subject: [PATCH 49/71] refactor(geom-tessellate): update type-only imports --- packages/geom-tessellate/src/earcut.ts | 2 +- packages/geom-tessellate/src/edge-split.ts | 2 +- packages/geom-tessellate/src/inset.ts | 2 +- packages/geom-tessellate/src/quad-fan.ts | 2 +- packages/geom-tessellate/src/rim-tris.ts | 2 +- packages/geom-tessellate/src/tessellate.ts | 2 +- packages/geom-tessellate/src/tri-fan.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/geom-tessellate/src/earcut.ts b/packages/geom-tessellate/src/earcut.ts index b085392a59..c7ac7e3126 100644 --- a/packages/geom-tessellate/src/earcut.ts +++ b/packages/geom-tessellate/src/earcut.ts @@ -1,8 +1,8 @@ +import type { Tessellator } from "@thi.ng/geom-api"; import { pointInTriangle2 } from "@thi.ng/geom-isec"; import { polyArea2 } from "@thi.ng/geom-poly-utils"; import { range } from "@thi.ng/transducers"; import { ReadonlyVec, signedArea2, Vec } from "@thi.ng/vectors"; -import type { Tessellator } from "@thi.ng/geom-api"; const snip = ( points: ReadonlyVec[], diff --git a/packages/geom-tessellate/src/edge-split.ts b/packages/geom-tessellate/src/edge-split.ts index ff2462216e..f5be5e2dc1 100644 --- a/packages/geom-tessellate/src/edge-split.ts +++ b/packages/geom-tessellate/src/edge-split.ts @@ -1,3 +1,4 @@ +import type { Tessellator } from "@thi.ng/geom-api"; import { centroid } from "@thi.ng/geom-poly-utils"; import { comp, @@ -8,7 +9,6 @@ import { wrapSides, } from "@thi.ng/transducers"; import { mixN, ReadonlyVec, Vec } from "@thi.ng/vectors"; -import type { Tessellator } from "@thi.ng/geom-api"; export const edgeSplit: Tessellator = (points: ReadonlyVec[]) => { const c = centroid(points); diff --git a/packages/geom-tessellate/src/inset.ts b/packages/geom-tessellate/src/inset.ts index 0031a7fde1..28ea4226c3 100644 --- a/packages/geom-tessellate/src/inset.ts +++ b/packages/geom-tessellate/src/inset.ts @@ -1,3 +1,4 @@ +import type { Tessellator } from "@thi.ng/geom-api"; import { centroid } from "@thi.ng/geom-poly-utils"; import { comp, @@ -9,7 +10,6 @@ import { zip, } from "@thi.ng/transducers"; import { mixN, ReadonlyVec, Vec } from "@thi.ng/vectors"; -import type { Tessellator } from "@thi.ng/geom-api"; export const tesselInset = (inset = 0.5, keepInterior = false): Tessellator => ( points: ReadonlyVec[] diff --git a/packages/geom-tessellate/src/quad-fan.ts b/packages/geom-tessellate/src/quad-fan.ts index 846a26692e..476f5f121b 100644 --- a/packages/geom-tessellate/src/quad-fan.ts +++ b/packages/geom-tessellate/src/quad-fan.ts @@ -1,3 +1,4 @@ +import type { Tessellator } from "@thi.ng/geom-api"; import { centroid } from "@thi.ng/geom-poly-utils"; import { comp, @@ -8,7 +9,6 @@ import { wrapSides, } from "@thi.ng/transducers"; import { mixN, ReadonlyVec, Vec } from "@thi.ng/vectors"; -import type { Tessellator } from "@thi.ng/geom-api"; export const quadFan: Tessellator = (points: ReadonlyVec[]) => { const p = centroid(points); diff --git a/packages/geom-tessellate/src/rim-tris.ts b/packages/geom-tessellate/src/rim-tris.ts index b91180785a..e33404916d 100644 --- a/packages/geom-tessellate/src/rim-tris.ts +++ b/packages/geom-tessellate/src/rim-tris.ts @@ -1,3 +1,4 @@ +import type { Tessellator } from "@thi.ng/geom-api"; import { comp, map, @@ -8,7 +9,6 @@ import { zip, } from "@thi.ng/transducers"; import { mixN, ReadonlyVec, Vec } from "@thi.ng/vectors"; -import type { Tessellator } from "@thi.ng/geom-api"; export const rimTris: Tessellator = (points: ReadonlyVec[]) => { const edgeCentroids = transduce( diff --git a/packages/geom-tessellate/src/tessellate.ts b/packages/geom-tessellate/src/tessellate.ts index 9a8d9dc8fe..c626529888 100644 --- a/packages/geom-tessellate/src/tessellate.ts +++ b/packages/geom-tessellate/src/tessellate.ts @@ -1,4 +1,5 @@ import { isFunction } from "@thi.ng/checks"; +import type { Tessellator } from "@thi.ng/geom-api"; import { last, mapcat, @@ -8,7 +9,6 @@ import { scan, transduce, } from "@thi.ng/transducers"; -import type { Tessellator } from "@thi.ng/geom-api"; import type { ReadonlyVec, Vec } from "@thi.ng/vectors"; export function tessellate( diff --git a/packages/geom-tessellate/src/tri-fan.ts b/packages/geom-tessellate/src/tri-fan.ts index 3396d5323a..af5083894b 100644 --- a/packages/geom-tessellate/src/tri-fan.ts +++ b/packages/geom-tessellate/src/tri-fan.ts @@ -1,3 +1,4 @@ +import type { Tessellator } from "@thi.ng/geom-api"; import { centroid } from "@thi.ng/geom-poly-utils"; import { comp, @@ -7,7 +8,6 @@ import { transduce, wrapSides, } from "@thi.ng/transducers"; -import type { Tessellator } from "@thi.ng/geom-api"; import type { ReadonlyVec, Vec } from "@thi.ng/vectors"; export const triFan: Tessellator = (points: ReadonlyVec[]) => { From f01e3f486f48727abfd86684e7c11af8953de6f9 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:03:30 +0000 Subject: [PATCH 50/71] refactor(imgui): update type-only imports --- packages/imgui/src/behaviors/button.ts | 2 +- packages/imgui/src/behaviors/slider.ts | 2 +- packages/imgui/src/behaviors/text.ts | 4 ++-- packages/imgui/src/components/button.ts | 4 ++-- packages/imgui/src/components/dial.ts | 2 +- packages/imgui/src/components/dropdown.ts | 2 +- packages/imgui/src/components/icon-button.ts | 2 +- packages/imgui/src/components/radial-menu.ts | 2 +- packages/imgui/src/components/radio.ts | 2 +- packages/imgui/src/components/ring.ts | 2 +- packages/imgui/src/components/sliderh.ts | 2 +- packages/imgui/src/components/sliderv.ts | 2 +- packages/imgui/src/components/textfield.ts | 2 +- packages/imgui/src/components/textlabel.ts | 4 ++-- packages/imgui/src/components/toggle.ts | 2 +- packages/imgui/src/components/tooltip.ts | 2 +- packages/imgui/src/components/xypad.ts | 4 ++-- packages/imgui/src/events.ts | 2 +- 18 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/imgui/src/behaviors/button.ts b/packages/imgui/src/behaviors/button.ts index 64b83b76a3..0a1196538c 100644 --- a/packages/imgui/src/behaviors/button.ts +++ b/packages/imgui/src/behaviors/button.ts @@ -2,7 +2,7 @@ import { pointInside } from "@thi.ng/geom"; import type { IShape } from "@thi.ng/geom-api"; import { Key } from "../api"; import { tooltipRaw } from "../components/tooltip"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; export const hoverButton = ( gui: IMGUI, diff --git a/packages/imgui/src/behaviors/slider.ts b/packages/imgui/src/behaviors/slider.ts index e643d01d60..3811e8f23b 100644 --- a/packages/imgui/src/behaviors/slider.ts +++ b/packages/imgui/src/behaviors/slider.ts @@ -4,7 +4,7 @@ import type { IShape } from "@thi.ng/geom-api"; import { clamp, roundTo } from "@thi.ng/math"; import { add2, clamp2, roundN2, Vec } from "@thi.ng/vectors"; import { Key } from "../api"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; export const isHoverSlider = ( gui: IMGUI, diff --git a/packages/imgui/src/behaviors/text.ts b/packages/imgui/src/behaviors/text.ts index b38cda645e..b8d1aa5d01 100644 --- a/packages/imgui/src/behaviors/text.ts +++ b/packages/imgui/src/behaviors/text.ts @@ -1,6 +1,6 @@ -import { Predicate } from "@thi.ng/api"; +import type { Predicate } from "@thi.ng/api"; import { Key } from "../api"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; const WS = /\s/; diff --git a/packages/imgui/src/components/button.ts b/packages/imgui/src/components/button.ts index 882ec7438d..2c8c810af7 100644 --- a/packages/imgui/src/components/button.ts +++ b/packages/imgui/src/components/button.ts @@ -1,11 +1,11 @@ -import { Fn5 } from "@thi.ng/api"; +import type { Fn5 } from "@thi.ng/api"; import { rect } from "@thi.ng/geom"; import type { IShape } from "@thi.ng/geom-api"; import type { IGridLayout, LayoutBox } from "@thi.ng/layout"; import { hash, ZERO2 } from "@thi.ng/vectors"; import type { GUITheme, Hash } from "../api"; import { handleButtonKeys, hoverButton } from "../behaviors/button"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { labelHash } from "../hash"; import { layoutBox } from "../layout"; import { textLabelRaw, textTransformH, textTransformV } from "./textlabel"; diff --git a/packages/imgui/src/components/dial.ts b/packages/imgui/src/components/dial.ts index 38b6a4357b..d47cc2e317 100644 --- a/packages/imgui/src/components/dial.ts +++ b/packages/imgui/src/components/dial.ts @@ -5,7 +5,7 @@ import { HALF_PI, norm, PI, TAU } from "@thi.ng/math"; import { cartesian2, hash } from "@thi.ng/vectors"; import { dialVal } from "../behaviors/dial"; import { handleSlider1Keys, isHoverSlider } from "../behaviors/slider"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { dialValueLabel } from "./textlabel"; import { tooltipRaw } from "./tooltip"; diff --git a/packages/imgui/src/components/dropdown.ts b/packages/imgui/src/components/dropdown.ts index 631b5c0fd8..da6216c7e8 100644 --- a/packages/imgui/src/components/dropdown.ts +++ b/packages/imgui/src/components/dropdown.ts @@ -2,7 +2,7 @@ import { polygon } from "@thi.ng/geom"; import { gridLayout, IGridLayout, isLayout, LayoutBox } from "@thi.ng/layout"; import { hash } from "@thi.ng/vectors"; import { Key } from "../api"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { buttonH } from "./button"; /** diff --git a/packages/imgui/src/components/icon-button.ts b/packages/imgui/src/components/icon-button.ts index a23c55c260..b3d774cfdf 100644 --- a/packages/imgui/src/components/icon-button.ts +++ b/packages/imgui/src/components/icon-button.ts @@ -1,7 +1,7 @@ import { rect } from "@thi.ng/geom"; import { IGridLayout, isLayout, LayoutBox } from "@thi.ng/layout"; import { hash } from "@thi.ng/vectors"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { mixHash } from "../hash"; import { buttonRaw } from "./button"; import { textLabelRaw } from "./textlabel"; diff --git a/packages/imgui/src/components/radial-menu.ts b/packages/imgui/src/components/radial-menu.ts index 4992b6c4ba..ca380c92d8 100644 --- a/packages/imgui/src/components/radial-menu.ts +++ b/packages/imgui/src/components/radial-menu.ts @@ -4,7 +4,7 @@ import { fmod } from "@thi.ng/math"; import { mapIndexed } from "@thi.ng/transducers"; import { add2, hash } from "@thi.ng/vectors"; import { Hash, Key } from "../api"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { buttonRaw } from "./button"; import { textLabelRaw } from "./textlabel"; diff --git a/packages/imgui/src/components/radio.ts b/packages/imgui/src/components/radio.ts index ad530ca9c5..125654218e 100644 --- a/packages/imgui/src/components/radio.ts +++ b/packages/imgui/src/components/radio.ts @@ -1,5 +1,5 @@ import { gridLayout, IGridLayout, isLayout, LayoutBox } from "@thi.ng/layout"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { toggle } from "./toggle"; export const radio = ( diff --git a/packages/imgui/src/components/ring.ts b/packages/imgui/src/components/ring.ts index 2f6785690d..b62b7781b3 100644 --- a/packages/imgui/src/components/ring.ts +++ b/packages/imgui/src/components/ring.ts @@ -7,7 +7,7 @@ import { map, normRange } from "@thi.ng/transducers"; import { cartesian2, hash, Vec } from "@thi.ng/vectors"; import { dialVal } from "../behaviors/dial"; import { handleSlider1Keys } from "../behaviors/slider"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { dialValueLabel } from "./textlabel"; import { tooltipRaw } from "./tooltip"; diff --git a/packages/imgui/src/components/sliderh.ts b/packages/imgui/src/components/sliderh.ts index 7b66d6d859..e77d3bf27b 100644 --- a/packages/imgui/src/components/sliderh.ts +++ b/packages/imgui/src/components/sliderh.ts @@ -8,7 +8,7 @@ import { isHoverSlider, slider1Val, } from "../behaviors/slider"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { valHash } from "../hash"; import { layoutBox } from "../layout"; import { textLabelRaw } from "./textlabel"; diff --git a/packages/imgui/src/components/sliderv.ts b/packages/imgui/src/components/sliderv.ts index df3abe27e6..a624a77027 100644 --- a/packages/imgui/src/components/sliderv.ts +++ b/packages/imgui/src/components/sliderv.ts @@ -8,7 +8,7 @@ import { isHoverSlider, slider1Val, } from "../behaviors/slider"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { valHash } from "../hash"; import { layoutBox } from "../layout"; import { textLabelRaw, textTransformV } from "./textlabel"; diff --git a/packages/imgui/src/components/textfield.ts b/packages/imgui/src/components/textfield.ts index ac4d502360..c2fbfa8d10 100644 --- a/packages/imgui/src/components/textfield.ts +++ b/packages/imgui/src/components/textfield.ts @@ -5,7 +5,7 @@ import { fitClamped } from "@thi.ng/math"; import { hash } from "@thi.ng/vectors"; import { isHoverSlider } from "../behaviors/slider"; import { handleTextfieldKeys } from "../behaviors/text"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { layoutBox } from "../layout"; import { textLabelRaw } from "./textlabel"; import { tooltipRaw } from "./tooltip"; diff --git a/packages/imgui/src/components/textlabel.ts b/packages/imgui/src/components/textlabel.ts index c2f214f200..310a8a4a13 100644 --- a/packages/imgui/src/components/textlabel.ts +++ b/packages/imgui/src/components/textlabel.ts @@ -1,9 +1,9 @@ -import { Fn } from "@thi.ng/api"; +import type { Fn } from "@thi.ng/api"; import { isPlainObject } from "@thi.ng/checks"; import type { IGridLayout, LayoutBox } from "@thi.ng/layout"; import type { ReadonlyVec } from "@thi.ng/vectors"; import type { Color, GUITheme } from "../api"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { valHash } from "../hash"; import { layoutBox } from "../layout"; diff --git a/packages/imgui/src/components/toggle.ts b/packages/imgui/src/components/toggle.ts index 7d73cf506f..78dcac2647 100644 --- a/packages/imgui/src/components/toggle.ts +++ b/packages/imgui/src/components/toggle.ts @@ -2,7 +2,7 @@ import { rect } from "@thi.ng/geom"; import type { IGridLayout, LayoutBox } from "@thi.ng/layout"; import { hash } from "@thi.ng/vectors"; import { handleButtonKeys, hoverButton } from "../behaviors/button"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { layoutBox } from "../layout"; import { textLabelRaw } from "./textlabel"; diff --git a/packages/imgui/src/components/tooltip.ts b/packages/imgui/src/components/tooltip.ts index 25e5e6d1c9..8b62499cf6 100644 --- a/packages/imgui/src/components/tooltip.ts +++ b/packages/imgui/src/components/tooltip.ts @@ -1,6 +1,6 @@ import { rect } from "@thi.ng/geom"; import { add2 } from "@thi.ng/vectors"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { textLabelRaw } from "./textlabel"; export const tooltipRaw = (gui: IMGUI, tooltip: string) => { diff --git a/packages/imgui/src/components/xypad.ts b/packages/imgui/src/components/xypad.ts index dc3218529a..c3eb727752 100644 --- a/packages/imgui/src/components/xypad.ts +++ b/packages/imgui/src/components/xypad.ts @@ -1,13 +1,13 @@ import type { Fn } from "@thi.ng/api"; import { line, rect } from "@thi.ng/geom"; -import { IGridLayout, LayoutBox } from "@thi.ng/layout"; +import type { IGridLayout, LayoutBox } from "@thi.ng/layout"; import { fit2, hash, Vec } from "@thi.ng/vectors"; import { handleSlider2Keys, isHoverSlider, slider2Val, } from "../behaviors/slider"; -import { IMGUI } from "../gui"; +import type { IMGUI } from "../gui"; import { textLabelRaw } from "./textlabel"; import { tooltipRaw } from "./tooltip"; diff --git a/packages/imgui/src/events.ts b/packages/imgui/src/events.ts index d1a661cf11..09a5ec4966 100644 --- a/packages/imgui/src/events.ts +++ b/packages/imgui/src/events.ts @@ -1,5 +1,5 @@ import { MouseButton } from "./api"; -import { IMGUI } from "./gui"; +import type { IMGUI } from "./gui"; /** * Injects default mouse & touch event handlers into `gui.attribs` and From 6407f7d4be118d2306af6b4b7c251352291675ee Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:04:53 +0000 Subject: [PATCH 51/71] refactor(transducers): update type-only imports --- packages/transducers/src/api.ts | 2 +- packages/transducers/src/func/comp.ts | 2 +- packages/transducers/src/func/juxtr.ts | 2 +- packages/transducers/src/internal/group-opts.ts | 2 +- packages/transducers/src/iterator.ts | 2 +- packages/transducers/src/rfn/add.ts | 2 +- packages/transducers/src/rfn/conj.ts | 2 +- packages/transducers/src/rfn/count.ts | 2 +- packages/transducers/src/rfn/div.ts | 2 +- packages/transducers/src/rfn/group-by-map.ts | 2 +- packages/transducers/src/rfn/max-mag.ts | 2 +- packages/transducers/src/rfn/max.ts | 2 +- packages/transducers/src/rfn/mean.ts | 2 +- packages/transducers/src/rfn/min-mag.ts | 2 +- packages/transducers/src/rfn/min.ts | 2 +- packages/transducers/src/rfn/mul.ts | 2 +- packages/transducers/src/rfn/push-copy.ts | 2 +- packages/transducers/src/rfn/push.ts | 2 +- packages/transducers/src/rfn/reductions.ts | 2 +- packages/transducers/src/rfn/str.ts | 2 +- packages/transducers/src/rfn/sub.ts | 2 +- packages/transducers/src/step.ts | 2 +- packages/transducers/src/xform/benchmark.ts | 2 +- packages/transducers/src/xform/delayed.ts | 2 +- packages/transducers/src/xform/drop-nth.ts | 2 +- packages/transducers/src/xform/drop.ts | 2 +- packages/transducers/src/xform/duplicate.ts | 2 +- packages/transducers/src/xform/indexed.ts | 2 +- packages/transducers/src/xform/interpolate-hermite.ts | 2 +- packages/transducers/src/xform/interpolate-linear.ts | 2 +- packages/transducers/src/xform/labeled.ts | 2 +- packages/transducers/src/xform/map-deep.ts | 2 +- packages/transducers/src/xform/moving-average.ts | 2 +- packages/transducers/src/xform/moving-median.ts | 2 +- packages/transducers/src/xform/multiplex.ts | 2 +- packages/transducers/src/xform/pad-last.ts | 2 +- packages/transducers/src/xform/page.ts | 2 +- packages/transducers/src/xform/partition-of.ts | 2 +- packages/transducers/src/xform/partition-sort.ts | 2 +- packages/transducers/src/xform/partition-time.ts | 2 +- packages/transducers/src/xform/partition.ts | 2 +- packages/transducers/src/xform/peek.ts | 2 +- packages/transducers/src/xform/pluck.ts | 2 +- packages/transducers/src/xform/sample.ts | 2 +- packages/transducers/src/xform/scan.ts | 2 +- packages/transducers/src/xform/select-keys.ts | 2 +- packages/transducers/src/xform/stream-shuffle.ts | 2 +- packages/transducers/src/xform/stream-sort.ts | 2 +- packages/transducers/src/xform/swizzle.ts | 2 +- packages/transducers/src/xform/take-last.ts | 2 +- packages/transducers/src/xform/take-nth.ts | 2 +- packages/transducers/src/xform/take.ts | 2 +- packages/transducers/src/xform/throttle-time.ts | 2 +- packages/transducers/src/xform/toggle.ts | 2 +- packages/transducers/src/xform/trace.ts | 2 +- 55 files changed, 55 insertions(+), 55 deletions(-) diff --git a/packages/transducers/src/api.ts b/packages/transducers/src/api.ts index e53826bb2d..d1a763af99 100644 --- a/packages/transducers/src/api.ts +++ b/packages/transducers/src/api.ts @@ -1,5 +1,5 @@ -import { Reduced } from "./reduced"; import type { Comparator, Fn, IObjectOf } from "@thi.ng/api"; +import type { Reduced } from "./reduced"; export type Transducer = (rfn: Reducer) => Reducer; diff --git a/packages/transducers/src/func/comp.ts b/packages/transducers/src/func/comp.ts index 50f747ae45..6881b97164 100644 --- a/packages/transducers/src/func/comp.ts +++ b/packages/transducers/src/func/comp.ts @@ -1,6 +1,6 @@ import { comp as _comp } from "@thi.ng/compose"; -import { ensureTransducer } from "../internal/ensure"; import type { Transducer, TxLike } from "../api"; +import { ensureTransducer } from "../internal/ensure"; /** * Transducer composition. Returns new transducer which applies given diff --git a/packages/transducers/src/func/juxtr.ts b/packages/transducers/src/func/juxtr.ts index 5de1942684..a676aee828 100644 --- a/packages/transducers/src/func/juxtr.ts +++ b/packages/transducers/src/func/juxtr.ts @@ -1,5 +1,5 @@ -import { isReduced, reduced, unreduced } from "../reduced"; import type { Reducer } from "../api"; +import { isReduced, reduced, unreduced } from "../reduced"; /** * Composes a new reducer from the ones given, in order to produce diff --git a/packages/transducers/src/internal/group-opts.ts b/packages/transducers/src/internal/group-opts.ts index 6df754f02e..e0938d956a 100644 --- a/packages/transducers/src/internal/group-opts.ts +++ b/packages/transducers/src/internal/group-opts.ts @@ -1,6 +1,6 @@ import { identity } from "@thi.ng/compose"; -import { push } from "../rfn/push"; import type { GroupByOpts } from "../api"; +import { push } from "../rfn/push"; /** * Shared helper function for `groupBy*` reducers diff --git a/packages/transducers/src/iterator.ts b/packages/transducers/src/iterator.ts index 9d88f4e0fd..2ee5329ee1 100644 --- a/packages/transducers/src/iterator.ts +++ b/packages/transducers/src/iterator.ts @@ -1,9 +1,9 @@ import { FnAny, NO_OP, SEMAPHORE } from "@thi.ng/api"; import { isIterable } from "@thi.ng/checks"; +import type { Reducer, Transducer, TxLike } from "./api"; import { ensureTransducer } from "./internal/ensure"; import { isReduced, unreduced } from "./reduced"; import { push } from "./rfn/push"; -import type { Reducer, Transducer, TxLike } from "./api"; /** * Takes a transducer and input iterable. Returns iterator of diff --git a/packages/transducers/src/rfn/add.ts b/packages/transducers/src/rfn/add.ts index 917b90b3a8..0fee29fa90 100644 --- a/packages/transducers/src/rfn/add.ts +++ b/packages/transducers/src/rfn/add.ts @@ -1,5 +1,5 @@ -import { __mathop } from "../internal/mathop"; import type { Reducer } from "../api"; +import { __mathop } from "../internal/mathop"; /** * Reducer to compute sum of values with given `init` value. Default: 0 diff --git a/packages/transducers/src/rfn/conj.ts b/packages/transducers/src/rfn/conj.ts index 9914cbc0a1..1cb9a25072 100644 --- a/packages/transducers/src/rfn/conj.ts +++ b/packages/transducers/src/rfn/conj.ts @@ -1,5 +1,5 @@ -import { reduce, reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reduce, reducer } from "../reduce"; /** * Reducer. Like {@link (push:1)}, but for ES6 Sets. diff --git a/packages/transducers/src/rfn/count.ts b/packages/transducers/src/rfn/count.ts index abb701c7a7..8e6d0572b5 100644 --- a/packages/transducers/src/rfn/count.ts +++ b/packages/transducers/src/rfn/count.ts @@ -1,5 +1,5 @@ -import { $$reduce, reducer } from "../reduce"; import type { Reducer } from "../api"; +import { $$reduce, reducer } from "../reduce"; /** * Reducer which ignores incoming values and instead only counts them, diff --git a/packages/transducers/src/rfn/div.ts b/packages/transducers/src/rfn/div.ts index f4b41cb1d2..a7c79b56ef 100644 --- a/packages/transducers/src/rfn/div.ts +++ b/packages/transducers/src/rfn/div.ts @@ -1,5 +1,5 @@ -import { reduce, reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reduce, reducer } from "../reduce"; /** * Reducer to compute successive division of values using given `init` diff --git a/packages/transducers/src/rfn/group-by-map.ts b/packages/transducers/src/rfn/group-by-map.ts index 7fa50f8ddb..8bb13520a6 100644 --- a/packages/transducers/src/rfn/group-by-map.ts +++ b/packages/transducers/src/rfn/group-by-map.ts @@ -1,6 +1,6 @@ +import type { GroupByOpts, Reducer } from "../api"; import { __groupByOpts } from "../internal/group-opts"; import { $$reduce } from "../reduce"; -import type { GroupByOpts, Reducer } from "../api"; // prettier-ignore export function groupByMap(opts?: Partial>): Reducer, SRC>; diff --git a/packages/transducers/src/rfn/max-mag.ts b/packages/transducers/src/rfn/max-mag.ts index 7d75349663..ca7790f9c5 100644 --- a/packages/transducers/src/rfn/max-mag.ts +++ b/packages/transducers/src/rfn/max-mag.ts @@ -1,5 +1,5 @@ -import { reduce, reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reduce, reducer } from "../reduce"; /** * Reducer which returns the value with the largest magnitude, regardless of diff --git a/packages/transducers/src/rfn/max.ts b/packages/transducers/src/rfn/max.ts index d0d19c1b2e..72e779dec2 100644 --- a/packages/transducers/src/rfn/max.ts +++ b/packages/transducers/src/rfn/max.ts @@ -1,5 +1,5 @@ -import { reduce, reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reduce, reducer } from "../reduce"; export function max(): Reducer; export function max(xs: Iterable): number; diff --git a/packages/transducers/src/rfn/mean.ts b/packages/transducers/src/rfn/mean.ts index 2ef04560f8..dbdc363338 100644 --- a/packages/transducers/src/rfn/mean.ts +++ b/packages/transducers/src/rfn/mean.ts @@ -1,5 +1,5 @@ -import { reduce } from "../reduce"; import type { Reducer } from "../api"; +import { reduce } from "../reduce"; /** * Reducer computing mean of received inputs. Returns 0 if no inputs diff --git a/packages/transducers/src/rfn/min-mag.ts b/packages/transducers/src/rfn/min-mag.ts index 283d9d501e..cdefa2d504 100644 --- a/packages/transducers/src/rfn/min-mag.ts +++ b/packages/transducers/src/rfn/min-mag.ts @@ -1,5 +1,5 @@ -import { reduce, reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reduce, reducer } from "../reduce"; /** * Reducer which returns the value with the smallest magnitude, regardless of diff --git a/packages/transducers/src/rfn/min.ts b/packages/transducers/src/rfn/min.ts index b0be2cbb58..d1edb64058 100644 --- a/packages/transducers/src/rfn/min.ts +++ b/packages/transducers/src/rfn/min.ts @@ -1,5 +1,5 @@ -import { reduce, reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reduce, reducer } from "../reduce"; export function min(): Reducer; export function min(xs: Iterable): number; diff --git a/packages/transducers/src/rfn/mul.ts b/packages/transducers/src/rfn/mul.ts index 512e6447dd..ff6eaf83c5 100644 --- a/packages/transducers/src/rfn/mul.ts +++ b/packages/transducers/src/rfn/mul.ts @@ -1,5 +1,5 @@ -import { __mathop } from "../internal/mathop"; import type { Reducer } from "../api"; +import { __mathop } from "../internal/mathop"; /** * Reducer to compute product of values with optional `init` value diff --git a/packages/transducers/src/rfn/push-copy.ts b/packages/transducers/src/rfn/push-copy.ts index 664ce625cc..0395005703 100644 --- a/packages/transducers/src/rfn/push-copy.ts +++ b/packages/transducers/src/rfn/push-copy.ts @@ -1,5 +1,5 @@ -import { reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reducer } from "../reduce"; export const pushCopy = (): Reducer => reducer( diff --git a/packages/transducers/src/rfn/push.ts b/packages/transducers/src/rfn/push.ts index cb656aa8f2..23d4b39dd9 100644 --- a/packages/transducers/src/rfn/push.ts +++ b/packages/transducers/src/rfn/push.ts @@ -1,5 +1,5 @@ -import { reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reducer } from "../reduce"; export function push(): Reducer; export function push(xs: Iterable): T[]; diff --git a/packages/transducers/src/rfn/reductions.ts b/packages/transducers/src/rfn/reductions.ts index 186a75530b..206173b0cc 100644 --- a/packages/transducers/src/rfn/reductions.ts +++ b/packages/transducers/src/rfn/reductions.ts @@ -1,6 +1,6 @@ +import type { Reducer } from "../api"; import { reduce } from "../reduce"; import { isReduced, reduced } from "../reduced"; -import type { Reducer } from "../api"; export function reductions(rfn: Reducer): Reducer; export function reductions(rfn: Reducer, xs: Iterable): A[]; diff --git a/packages/transducers/src/rfn/str.ts b/packages/transducers/src/rfn/str.ts index 43974ad7e9..dded76e618 100644 --- a/packages/transducers/src/rfn/str.ts +++ b/packages/transducers/src/rfn/str.ts @@ -1,5 +1,5 @@ -import { reducer } from "../reduce"; import type { Reducer } from "../api"; +import { reducer } from "../reduce"; export function str(sep?: string): Reducer; export function str(sep: string, xs: Iterable): string; diff --git a/packages/transducers/src/rfn/sub.ts b/packages/transducers/src/rfn/sub.ts index 8cd2c13298..c11aabd352 100644 --- a/packages/transducers/src/rfn/sub.ts +++ b/packages/transducers/src/rfn/sub.ts @@ -1,5 +1,5 @@ -import { __mathop } from "../internal/mathop"; import type { Reducer } from "../api"; +import { __mathop } from "../internal/mathop"; /** * Reducer to successively subtract values from optional `init` value diff --git a/packages/transducers/src/step.ts b/packages/transducers/src/step.ts index ce50e53d6f..791df5fc88 100644 --- a/packages/transducers/src/step.ts +++ b/packages/transducers/src/step.ts @@ -1,7 +1,7 @@ +import type { TxLike } from "./api"; import { ensureTransducer } from "./internal/ensure"; import { isReduced } from "./reduced"; import { push } from "./rfn/push"; -import type { TxLike } from "./api"; /** * Single-step transducer execution wrapper. diff --git a/packages/transducers/src/xform/benchmark.ts b/packages/transducers/src/xform/benchmark.ts index 6386d1d8bd..d0700cec26 100644 --- a/packages/transducers/src/xform/benchmark.ts +++ b/packages/transducers/src/xform/benchmark.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Reducer, Transducer } from "../api"; import { compR } from "../func/compr"; import { iterator1 } from "../iterator"; -import type { Reducer, Transducer } from "../api"; /** * Stateful transducer. Ignores the actual input values, but diff --git a/packages/transducers/src/xform/delayed.ts b/packages/transducers/src/xform/delayed.ts index ab8d16b9b4..09e35ce494 100644 --- a/packages/transducers/src/xform/delayed.ts +++ b/packages/transducers/src/xform/delayed.ts @@ -1,6 +1,6 @@ import { delayed as _delayed } from "@thi.ng/compose"; -import { map } from "./map"; import type { Transducer } from "../api"; +import { map } from "./map"; /** * Yields transducer which wraps incoming values in promises, which each diff --git a/packages/transducers/src/xform/drop-nth.ts b/packages/transducers/src/xform/drop-nth.ts index 7b53fa8e9d..95bd66c1da 100644 --- a/packages/transducers/src/xform/drop-nth.ts +++ b/packages/transducers/src/xform/drop-nth.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { iterator1 } from "../iterator"; import { throttle } from "./throttle"; -import type { Transducer } from "../api"; export function dropNth(n: number): Transducer; export function dropNth(n: number, src: Iterable): IterableIterator; diff --git a/packages/transducers/src/xform/drop.ts b/packages/transducers/src/xform/drop.ts index 37f98aa8cc..e9d4f4ebca 100644 --- a/packages/transducers/src/xform/drop.ts +++ b/packages/transducers/src/xform/drop.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Reducer, Transducer } from "../api"; import { compR } from "../func/compr"; import { iterator1 } from "../iterator"; -import type { Reducer, Transducer } from "../api"; export function drop(n: number): Transducer; export function drop(n: number, src: Iterable): IterableIterator; diff --git a/packages/transducers/src/xform/duplicate.ts b/packages/transducers/src/xform/duplicate.ts index 192ef79712..bdca4f5966 100644 --- a/packages/transducers/src/xform/duplicate.ts +++ b/packages/transducers/src/xform/duplicate.ts @@ -1,8 +1,8 @@ import { isIterable } from "@thi.ng/checks"; +import type { Reducer, Transducer } from "../api"; import { compR } from "../func/compr"; import { iterator } from "../iterator"; import { isReduced } from "../reduced"; -import type { Reducer, Transducer } from "../api"; export function duplicate(n?: number): Transducer; export function duplicate(n: number, src: Iterable): IterableIterator; diff --git a/packages/transducers/src/xform/indexed.ts b/packages/transducers/src/xform/indexed.ts index 9dae54af01..801bb5a101 100644 --- a/packages/transducers/src/xform/indexed.ts +++ b/packages/transducers/src/xform/indexed.ts @@ -1,6 +1,6 @@ +import type { Transducer } from "../api"; import { $iter } from "../iterator"; import { mapIndexed } from "./map-indexed"; -import type { Transducer } from "../api"; export function indexed(from?: number): Transducer; export function indexed(src: Iterable): IterableIterator<[number, T]>; diff --git a/packages/transducers/src/xform/interpolate-hermite.ts b/packages/transducers/src/xform/interpolate-hermite.ts index 484facd3e8..7131cfe4db 100644 --- a/packages/transducers/src/xform/interpolate-hermite.ts +++ b/packages/transducers/src/xform/interpolate-hermite.ts @@ -1,6 +1,6 @@ import { mixHermite } from "@thi.ng/math"; -import { interpolate } from "./interpolate"; import type { Transducer } from "../api"; +import { interpolate } from "./interpolate"; /** * Pre-configured version of {@link (interpolate:1)} for numeric values diff --git a/packages/transducers/src/xform/interpolate-linear.ts b/packages/transducers/src/xform/interpolate-linear.ts index c00475525c..dba20daf30 100644 --- a/packages/transducers/src/xform/interpolate-linear.ts +++ b/packages/transducers/src/xform/interpolate-linear.ts @@ -1,6 +1,6 @@ import { mix } from "@thi.ng/math"; -import { interpolate } from "./interpolate"; import type { Transducer } from "../api"; +import { interpolate } from "./interpolate"; /** * Pre-configured version of {@link (interpolate:1)} for numeric values diff --git a/packages/transducers/src/xform/labeled.ts b/packages/transducers/src/xform/labeled.ts index 4222d291de..d336c887c5 100644 --- a/packages/transducers/src/xform/labeled.ts +++ b/packages/transducers/src/xform/labeled.ts @@ -1,7 +1,7 @@ import { isFunction, isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { iterator1 } from "../iterator"; import { map } from "./map"; -import type { Transducer } from "../api"; export type LabelFn = L | ((x: T) => L); diff --git a/packages/transducers/src/xform/map-deep.ts b/packages/transducers/src/xform/map-deep.ts index f0ecdc53fc..2377cf258a 100644 --- a/packages/transducers/src/xform/map-deep.ts +++ b/packages/transducers/src/xform/map-deep.ts @@ -1,8 +1,8 @@ import { isIterable } from "@thi.ng/checks"; +import type { Transducer, TransformSpec } from "../api"; import { deepTransform } from "../func/deep-transform"; import { iterator1 } from "../iterator"; import { map } from "./map"; -import type { Transducer, TransformSpec } from "../api"; /** * Transducer. Same as `map(deepTransform(spec))` diff --git a/packages/transducers/src/xform/moving-average.ts b/packages/transducers/src/xform/moving-average.ts index 7734c9044f..5cdaf49fc6 100644 --- a/packages/transducers/src/xform/moving-average.ts +++ b/packages/transducers/src/xform/moving-average.ts @@ -1,8 +1,8 @@ import { isIterable } from "@thi.ng/checks"; import { illegalArgs } from "@thi.ng/errors"; +import type { Reducer, Transducer } from "../api"; import { compR } from "../func/compr"; import { iterator1 } from "../iterator"; -import type { Reducer, Transducer } from "../api"; /** * Computes the diff --git a/packages/transducers/src/xform/moving-median.ts b/packages/transducers/src/xform/moving-median.ts index d20a92f345..73245ec9e3 100644 --- a/packages/transducers/src/xform/moving-median.ts +++ b/packages/transducers/src/xform/moving-median.ts @@ -1,9 +1,9 @@ +import type { SortOpts, Transducer } from "../api"; import { comp } from "../func/comp"; import { __sortOpts } from "../internal/sort-opts"; import { $iter } from "../iterator"; import { map } from "./map"; import { partition } from "./partition"; -import type { SortOpts, Transducer } from "../api"; /** * Transducer. Similar to {@link (movingAverage:1)}, but yields median diff --git a/packages/transducers/src/xform/multiplex.ts b/packages/transducers/src/xform/multiplex.ts index 83b5dac8cd..ff6154bb30 100644 --- a/packages/transducers/src/xform/multiplex.ts +++ b/packages/transducers/src/xform/multiplex.ts @@ -1,7 +1,7 @@ import { juxt } from "@thi.ng/compose"; +import type { Transducer, TxLike } from "../api"; import { step } from "../step"; import { map } from "./map"; -import type { Transducer, TxLike } from "../api"; /** * Yields a new transducer which applies given transducers in parallel diff --git a/packages/transducers/src/xform/pad-last.ts b/packages/transducers/src/xform/pad-last.ts index 5b7892d244..14f58523c6 100644 --- a/packages/transducers/src/xform/pad-last.ts +++ b/packages/transducers/src/xform/pad-last.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Reducer, Transducer } from "../api"; import { iterator } from "../iterator"; import { isReduced } from "../reduced"; -import type { Reducer, Transducer } from "../api"; /** * Ensures the total number of transformed values will be multiples of diff --git a/packages/transducers/src/xform/page.ts b/packages/transducers/src/xform/page.ts index e1ce1b4565..e96237bef8 100644 --- a/packages/transducers/src/xform/page.ts +++ b/packages/transducers/src/xform/page.ts @@ -1,8 +1,8 @@ +import type { Transducer } from "../api"; import { comp } from "../func/comp"; import { $iter } from "../iterator"; import { drop } from "./drop"; import { take } from "./take"; -import type { Transducer } from "../api"; /** * Pagination helper. Returns transducer which extracts only items for diff --git a/packages/transducers/src/xform/partition-of.ts b/packages/transducers/src/xform/partition-of.ts index bc8cddbdbe..92bdc9c78a 100644 --- a/packages/transducers/src/xform/partition-of.ts +++ b/packages/transducers/src/xform/partition-of.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { iterator } from "../iterator"; import { partitionBy } from "./partition-by"; -import type { Transducer } from "../api"; /** * Transducer. Yields cyclic sequence of user defined variable sized diff --git a/packages/transducers/src/xform/partition-sort.ts b/packages/transducers/src/xform/partition-sort.ts index b64c75d4bc..ccc69a9e2d 100644 --- a/packages/transducers/src/xform/partition-sort.ts +++ b/packages/transducers/src/xform/partition-sort.ts @@ -1,9 +1,9 @@ +import type { SortOpts, Transducer } from "../api"; import { comp } from "../func/comp"; import { __sortOpts } from "../internal/sort-opts"; import { $iter, iterator } from "../iterator"; import { mapcat } from "./mapcat"; import { partition } from "./partition"; -import type { SortOpts, Transducer } from "../api"; /** * Transducer. Composition of {@link (partition:1)} and diff --git a/packages/transducers/src/xform/partition-time.ts b/packages/transducers/src/xform/partition-time.ts index b54c291b79..bcd8553b38 100644 --- a/packages/transducers/src/xform/partition-time.ts +++ b/packages/transducers/src/xform/partition-time.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { iterator } from "../iterator"; import { partitionBy } from "./partition-by"; -import type { Transducer } from "../api"; /** * Transducer. Yields tumbling, non-overlapping windows/partitions of diff --git a/packages/transducers/src/xform/partition.ts b/packages/transducers/src/xform/partition.ts index 064c02243b..7f7abe177f 100644 --- a/packages/transducers/src/xform/partition.ts +++ b/packages/transducers/src/xform/partition.ts @@ -1,5 +1,5 @@ -import { $iter, iterator } from "../iterator"; import type { Reducer, Transducer } from "../api"; +import { $iter, iterator } from "../iterator"; /** * Transducer to create overlapping and non-overlapping sliding windows diff --git a/packages/transducers/src/xform/peek.ts b/packages/transducers/src/xform/peek.ts index ea1a3fe2b1..7bdcefacda 100644 --- a/packages/transducers/src/xform/peek.ts +++ b/packages/transducers/src/xform/peek.ts @@ -1,6 +1,6 @@ import { peek as _peek } from "@thi.ng/arrays"; -import { map } from "./map"; import type { Transducer } from "../api"; +import { map } from "./map"; /** * Transducer version of {@link @thi.ng/api#peek}, i.e. extracts the diff --git a/packages/transducers/src/xform/pluck.ts b/packages/transducers/src/xform/pluck.ts index dbfe37dfdc..bc5e77a4aa 100644 --- a/packages/transducers/src/xform/pluck.ts +++ b/packages/transducers/src/xform/pluck.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { iterator1 } from "../iterator"; import { map } from "./map"; -import type { Transducer } from "../api"; /** * Transducer which looks up given `key` in each input and yields diff --git a/packages/transducers/src/xform/sample.ts b/packages/transducers/src/xform/sample.ts index 9490971c10..5f3691f50b 100644 --- a/packages/transducers/src/xform/sample.ts +++ b/packages/transducers/src/xform/sample.ts @@ -1,7 +1,7 @@ import { IRandom, SYSTEM } from "@thi.ng/random"; +import type { Reducer, Transducer } from "../api"; import { compR } from "../func/compr"; import { $iter } from "../iterator"; -import type { Reducer, Transducer } from "../api"; /** * Transducer which only yields values with given `prob` probability diff --git a/packages/transducers/src/xform/scan.ts b/packages/transducers/src/xform/scan.ts index cf9b9bde39..e7f8f63bea 100644 --- a/packages/transducers/src/xform/scan.ts +++ b/packages/transducers/src/xform/scan.ts @@ -1,6 +1,6 @@ +import type { Reducer, Transducer } from "../api"; import { $iter, iterator } from "../iterator"; import { ensureReduced, isReduced, unreduced } from "../reduced"; -import type { Reducer, Transducer } from "../api"; /** * Transducer which performs "scan" operation via given reducer. diff --git a/packages/transducers/src/xform/select-keys.ts b/packages/transducers/src/xform/select-keys.ts index 975df3b1e3..3e14f5e022 100644 --- a/packages/transducers/src/xform/select-keys.ts +++ b/packages/transducers/src/xform/select-keys.ts @@ -1,8 +1,8 @@ import { isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { keySelector } from "../func/key-selector"; import { iterator1 } from "../iterator"; import { map } from "./map"; -import type { Transducer } from "../api"; /** * Transducer which yields sequence of transformed objects, each only diff --git a/packages/transducers/src/xform/stream-shuffle.ts b/packages/transducers/src/xform/stream-shuffle.ts index e51a9bb4d2..0a9ea0e930 100644 --- a/packages/transducers/src/xform/stream-shuffle.ts +++ b/packages/transducers/src/xform/stream-shuffle.ts @@ -1,7 +1,7 @@ import { shuffle } from "@thi.ng/arrays"; +import type { Reducer, Transducer } from "../api"; import { $iter, iterator } from "../iterator"; import { isReduced } from "../reduced"; -import type { Reducer, Transducer } from "../api"; /** * Transducer. Creates internal sliding window of `n` values and diff --git a/packages/transducers/src/xform/stream-sort.ts b/packages/transducers/src/xform/stream-sort.ts index 2644415616..ddb9960ec4 100644 --- a/packages/transducers/src/xform/stream-sort.ts +++ b/packages/transducers/src/xform/stream-sort.ts @@ -1,8 +1,8 @@ import { binarySearch } from "@thi.ng/arrays"; +import type { Reducer, SortOpts, Transducer } from "../api"; import { __drain } from "../internal/drain"; import { __sortOpts } from "../internal/sort-opts"; import { $iter, iterator } from "../iterator"; -import type { Reducer, SortOpts, Transducer } from "../api"; /** * Transducer. Similar to {@link (partitionSort:1)}, however uses proper diff --git a/packages/transducers/src/xform/swizzle.ts b/packages/transducers/src/xform/swizzle.ts index e216dd7e76..f3d7810832 100644 --- a/packages/transducers/src/xform/swizzle.ts +++ b/packages/transducers/src/xform/swizzle.ts @@ -1,8 +1,8 @@ import { swizzle as _swizzle } from "@thi.ng/arrays"; import { isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { iterator1 } from "../iterator"; import { map } from "./map"; -import type { Transducer } from "../api"; /** * Transducer which performs value reordering on inputs using provided diff --git a/packages/transducers/src/xform/take-last.ts b/packages/transducers/src/xform/take-last.ts index fce3d397e8..1053646d8e 100644 --- a/packages/transducers/src/xform/take-last.ts +++ b/packages/transducers/src/xform/take-last.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Reducer, Transducer } from "../api"; import { __drain } from "../internal/drain"; import { iterator } from "../iterator"; -import type { Reducer, Transducer } from "../api"; /** * Transducer which only yields the last `n` values. Assumes diff --git a/packages/transducers/src/xform/take-nth.ts b/packages/transducers/src/xform/take-nth.ts index 6b5ab5da0b..b905742028 100644 --- a/packages/transducers/src/xform/take-nth.ts +++ b/packages/transducers/src/xform/take-nth.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { iterator1 } from "../iterator"; import { throttle } from "./throttle"; -import type { Transducer } from "../api"; /** * Transducer which only yields every `n`-th value from the input diff --git a/packages/transducers/src/xform/take.ts b/packages/transducers/src/xform/take.ts index b706b388f0..59272f8524 100644 --- a/packages/transducers/src/xform/take.ts +++ b/packages/transducers/src/xform/take.ts @@ -1,8 +1,8 @@ import { isIterable } from "@thi.ng/checks"; +import type { Reducer, Transducer } from "../api"; import { compR } from "../func/compr"; import { iterator } from "../iterator"; import { ensureReduced, reduced } from "../reduced"; -import type { Reducer, Transducer } from "../api"; /** * Transducer which only yields the first `n` values and then terminates diff --git a/packages/transducers/src/xform/throttle-time.ts b/packages/transducers/src/xform/throttle-time.ts index 712ebf76b1..b957207cb6 100644 --- a/packages/transducers/src/xform/throttle-time.ts +++ b/packages/transducers/src/xform/throttle-time.ts @@ -1,7 +1,7 @@ import { isIterable } from "@thi.ng/checks"; +import type { Transducer } from "../api"; import { iterator1 } from "../iterator"; import { throttle } from "./throttle"; -import type { Transducer } from "../api"; /** * Time-based version of {@link (throttle:1)}. Ignores any new values in diff --git a/packages/transducers/src/xform/toggle.ts b/packages/transducers/src/xform/toggle.ts index 0f050cbfac..b915d8faa5 100644 --- a/packages/transducers/src/xform/toggle.ts +++ b/packages/transducers/src/xform/toggle.ts @@ -1,6 +1,6 @@ import { isIterable } from "@thi.ng/checks"; -import { iterator1 } from "../iterator"; import type { Reducer, Transducer } from "../api"; +import { iterator1 } from "../iterator"; /** * Stateful transducer which accepts any input and flips between given diff --git a/packages/transducers/src/xform/trace.ts b/packages/transducers/src/xform/trace.ts index 1d2ac26e3e..6555b2057a 100644 --- a/packages/transducers/src/xform/trace.ts +++ b/packages/transducers/src/xform/trace.ts @@ -1,5 +1,5 @@ -import { sideEffect } from "./side-effect"; import type { Transducer } from "../api"; +import { sideEffect } from "./side-effect"; export const trace = (prefix = ""): Transducer => sideEffect((x) => console.log(prefix, x)); From cdf5d626bf3a6316b998cd3c159ae4db92316a1d Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:05:36 +0000 Subject: [PATCH 52/71] refactor(rstream): update type-only imports --- packages/rstream/src/api.ts | 4 ++-- packages/rstream/src/forkjoin.ts | 2 +- packages/rstream/src/from/promises.ts | 2 +- packages/rstream/src/subs/sidechain-partition.ts | 2 +- packages/rstream/src/subs/sidechain-toggle.ts | 2 +- packages/rstream/src/subs/transduce.ts | 2 +- packages/rstream/src/trigger.ts | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/rstream/src/api.ts b/packages/rstream/src/api.ts index 6b935ef846..9cc18cee1a 100644 --- a/packages/rstream/src/api.ts +++ b/packages/rstream/src/api.ts @@ -1,7 +1,7 @@ import { Fn, Fn0, IDeref, IID, ILogger, NULL_LOGGER } from "@thi.ng/api"; import type { Transducer } from "@thi.ng/transducers"; -import { Stream } from "./stream"; -import { Subscription } from "./subscription"; +import type { Stream } from "./stream"; +import type { Subscription } from "./subscription"; export enum State { IDLE, diff --git a/packages/rstream/src/forkjoin.ts b/packages/rstream/src/forkjoin.ts index 4dae1ab109..b72ee88491 100644 --- a/packages/rstream/src/forkjoin.ts +++ b/packages/rstream/src/forkjoin.ts @@ -10,7 +10,7 @@ import { import type { CommonOpts, ISubscribable, ITransformable } from "./api"; import { sync } from "./stream-sync"; import { tunnel } from "./subs/tunnel"; -import { Subscription } from "./subscription"; +import type { Subscription } from "./subscription"; export interface ForkJoinOpts extends Partial { /** diff --git a/packages/rstream/src/from/promises.ts b/packages/rstream/src/from/promises.ts index 71789740a8..543cc0b97c 100644 --- a/packages/rstream/src/from/promises.ts +++ b/packages/rstream/src/from/promises.ts @@ -1,6 +1,6 @@ import { mapcat } from "@thi.ng/transducers"; import type { CommonOpts } from "../api"; -import { Subscription } from "../subscription"; +import type { Subscription } from "../subscription"; import { optsWithID } from "../utils/idgen"; import { fromPromise } from "./promise"; diff --git a/packages/rstream/src/subs/sidechain-partition.ts b/packages/rstream/src/subs/sidechain-partition.ts index ed5f95289f..0777b58f36 100644 --- a/packages/rstream/src/subs/sidechain-partition.ts +++ b/packages/rstream/src/subs/sidechain-partition.ts @@ -1,6 +1,6 @@ import type { Predicate } from "@thi.ng/api"; import { CommonOpts, ISubscribable, State } from "../api"; -import { Subscription } from "../subscription"; +import type { Subscription } from "../subscription"; import { optsWithID } from "../utils/idgen"; import { ASidechain } from "./asidechain"; diff --git a/packages/rstream/src/subs/sidechain-toggle.ts b/packages/rstream/src/subs/sidechain-toggle.ts index 05f034bff9..0954670f74 100644 --- a/packages/rstream/src/subs/sidechain-toggle.ts +++ b/packages/rstream/src/subs/sidechain-toggle.ts @@ -1,6 +1,6 @@ import type { Predicate } from "@thi.ng/api"; import { CommonOpts, ISubscribable, State } from "../api"; -import { Subscription } from "../subscription"; +import type { Subscription } from "../subscription"; import { optsWithID } from "../utils/idgen"; import { ASidechain } from "./asidechain"; diff --git a/packages/rstream/src/subs/transduce.ts b/packages/rstream/src/subs/transduce.ts index de491e1da1..7de06a31bc 100644 --- a/packages/rstream/src/subs/transduce.ts +++ b/packages/rstream/src/subs/transduce.ts @@ -1,6 +1,6 @@ import type { Reducer, Transducer } from "@thi.ng/transducers"; import { isReduced, Reduced } from "@thi.ng/transducers"; -import { Subscription } from "../subscription"; +import type { Subscription } from "../subscription"; /** * Returns a promise which subscribes to given input and transforms diff --git a/packages/rstream/src/trigger.ts b/packages/rstream/src/trigger.ts index 9dcb8cb67b..36df61a90c 100644 --- a/packages/rstream/src/trigger.ts +++ b/packages/rstream/src/trigger.ts @@ -1,6 +1,6 @@ -import { CommonOpts } from "./api"; +import type { CommonOpts } from "./api"; import { fromIterableSync } from "./from/iterable"; -import { Stream } from "./stream"; +import type { Stream } from "./stream"; import { optsWithID } from "./utils/idgen"; /** From 6b1c0b3d64ccee6516189da63932646af2487acb Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:06:10 +0000 Subject: [PATCH 53/71] refactor(fsm): update type-only imports --- packages/fsm/src/alts-lit.ts | 2 +- packages/fsm/src/always.ts | 2 +- packages/fsm/src/fsm.ts | 2 +- packages/fsm/src/lit.ts | 2 +- packages/fsm/src/range.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/fsm/src/alts-lit.ts b/packages/fsm/src/alts-lit.ts index 0d0538060f..11fb9f5607 100644 --- a/packages/fsm/src/alts-lit.ts +++ b/packages/fsm/src/alts-lit.ts @@ -1,6 +1,6 @@ +import type { IObjectOf } from "@thi.ng/api"; import { LitCallback, Match, Matcher } from "./api"; import { result } from "./result"; -import type { IObjectOf } from "@thi.ng/api"; export const altsLit = ( opts: Set, diff --git a/packages/fsm/src/always.ts b/packages/fsm/src/always.ts index 9822e15fea..0bcf5c65ae 100644 --- a/packages/fsm/src/always.ts +++ b/packages/fsm/src/always.ts @@ -1,5 +1,5 @@ -import { result } from "./result"; import type { LitCallback, Matcher } from "./api"; +import { result } from "./result"; /** * Returns a matcher which always succeeds (produces a `Match.FULL` result) for diff --git a/packages/fsm/src/fsm.ts b/packages/fsm/src/fsm.ts index 84f433f4e1..a6da8a9a4e 100644 --- a/packages/fsm/src/fsm.ts +++ b/packages/fsm/src/fsm.ts @@ -1,3 +1,4 @@ +import type { Fn2, IObjectOf } from "@thi.ng/api"; import { illegalArgs, illegalState } from "@thi.ng/errors"; import { ensureReduced, @@ -9,7 +10,6 @@ import { unreduced, } from "@thi.ng/transducers"; import { Match, Matcher } from "./api"; -import type { Fn2, IObjectOf } from "@thi.ng/api"; /** * Finite-state machine transducer / iterator with support for single diff --git a/packages/fsm/src/lit.ts b/packages/fsm/src/lit.ts index 04105318f0..0a8a3f596b 100644 --- a/packages/fsm/src/lit.ts +++ b/packages/fsm/src/lit.ts @@ -1,7 +1,7 @@ +import type { Predicate2 } from "@thi.ng/api"; import { equiv as _equiv } from "@thi.ng/equiv"; import { Match, Matcher, RES_PARTIAL, SeqCallback } from "./api"; import { result } from "./result"; -import type { Predicate2 } from "@thi.ng/api"; export const lit = ( match: T[], diff --git a/packages/fsm/src/range.ts b/packages/fsm/src/range.ts index d4eea112d4..0d0c4ec980 100644 --- a/packages/fsm/src/range.ts +++ b/packages/fsm/src/range.ts @@ -1,7 +1,7 @@ import { ALPHA, DIGITS, WS } from "@thi.ng/strings"; import { altsLitObj } from "./alts-lit"; -import { result } from "./result"; import type { LitCallback, Matcher } from "./api"; +import { result } from "./result"; /** * Returns a single input matcher which returns `Match.FULL` if the From 91817aa85830687cd6e67982ef90e811dd370576 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:06:56 +0000 Subject: [PATCH 54/71] refactor(malloc): update type-only imports --- packages/malloc/src/api.ts | 7 ++++++- packages/malloc/src/native.ts | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/malloc/src/api.ts b/packages/malloc/src/api.ts index f5a8769f4a..8b805569e6 100644 --- a/packages/malloc/src/api.ts +++ b/packages/malloc/src/api.ts @@ -1,4 +1,9 @@ -import { IRelease, Type, TypedArray, TypedArrayTypeMap } from "@thi.ng/api"; +import type { + IRelease, + Type, + TypedArray, + TypedArrayTypeMap, +} from "@thi.ng/api"; import type { Pow2 } from "@thi.ng/binary"; export interface MemPoolOpts { diff --git a/packages/malloc/src/native.ts b/packages/malloc/src/native.ts index 283ae2cfc5..9bf79cc9ac 100644 --- a/packages/malloc/src/native.ts +++ b/packages/malloc/src/native.ts @@ -1,5 +1,5 @@ import { Type, TypedArray, typedArray, TypedArrayTypeMap } from "@thi.ng/api"; -import { IMemPoolArray } from "./api"; +import type { IMemPoolArray } from "./api"; /** * Stub/polyfill implementation of {@link IMemPoolArray}, merely delegating to From 85874bcfcfba4798818bb338f4e79dced3a78787 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:07:37 +0000 Subject: [PATCH 55/71] refactor(parse): update type-only imports --- packages/parse/src/api.ts | 2 +- packages/parse/src/combinators/dynamic.ts | 2 +- packages/parse/src/error.ts | 2 +- packages/parse/src/xform/nest.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/parse/src/api.ts b/packages/parse/src/api.ts index b27951246e..02d864651b 100644 --- a/packages/parse/src/api.ts +++ b/packages/parse/src/api.ts @@ -1,5 +1,5 @@ import type { Fn, Fn0, IObjectOf, Nullable } from "@thi.ng/api"; -import { ParseContext } from "./context"; +import type { ParseContext } from "./context"; export interface ParseScope { id: string; diff --git a/packages/parse/src/combinators/dynamic.ts b/packages/parse/src/combinators/dynamic.ts index 3414e341d7..d73dc66e9e 100644 --- a/packages/parse/src/combinators/dynamic.ts +++ b/packages/parse/src/combinators/dynamic.ts @@ -1,6 +1,6 @@ import type { Nullable } from "@thi.ng/api"; import type { DynamicParser, Parser } from "../api"; -import { ParseContext } from "../context"; +import type { ParseContext } from "../context"; /** * Returns a parser function placeholder, whose implementation can be diff --git a/packages/parse/src/error.ts b/packages/parse/src/error.ts index 0fc7875635..be6e21afa8 100644 --- a/packages/parse/src/error.ts +++ b/packages/parse/src/error.ts @@ -1,5 +1,5 @@ import { defError } from "@thi.ng/errors"; -import { ParseContext } from "./context"; +import type { ParseContext } from "./context"; const ParseError = defError(() => `ParseError`); diff --git a/packages/parse/src/xform/nest.ts b/packages/parse/src/xform/nest.ts index f37bafb870..e2ae302b27 100644 --- a/packages/parse/src/xform/nest.ts +++ b/packages/parse/src/xform/nest.ts @@ -1,4 +1,4 @@ -import { Parser, ScopeTransform } from "../api"; +import type { Parser, ScopeTransform } from "../api"; import { xform } from "../combinators/xform"; import { defContext } from "../context"; import { xfJoin } from "./join"; From 3b2eb850376a4e133b63e2e8fd8cd3625a14e803 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:08:29 +0000 Subject: [PATCH 56/71] refactor(scenegraph): update type-only imports --- packages/scenegraph/src/node2.ts | 2 +- packages/scenegraph/src/node3.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/scenegraph/src/node2.ts b/packages/scenegraph/src/node2.ts index b272a33c85..ed1aeaf255 100644 --- a/packages/scenegraph/src/node2.ts +++ b/packages/scenegraph/src/node2.ts @@ -1,4 +1,4 @@ -import { ICopy, IToHiccup, Nullable } from "@thi.ng/api"; +import type { ICopy, IToHiccup, Nullable } from "@thi.ng/api"; import { isNumber } from "@thi.ng/checks"; import { invert23, mulM23, mulV23, transform23 } from "@thi.ng/matrices"; import { ReadonlyVec, set2, Vec } from "@thi.ng/vectors"; diff --git a/packages/scenegraph/src/node3.ts b/packages/scenegraph/src/node3.ts index 0874936116..df1eb9f4f5 100644 --- a/packages/scenegraph/src/node3.ts +++ b/packages/scenegraph/src/node3.ts @@ -1,4 +1,4 @@ -import { ICopy, IToHiccup, Nullable } from "@thi.ng/api"; +import type { ICopy, IToHiccup, Nullable } from "@thi.ng/api"; import { isNumber } from "@thi.ng/checks"; import { invert44, mulM44, mulV344, transform44 } from "@thi.ng/matrices"; import { ReadonlyVec, set3, Vec } from "@thi.ng/vectors"; From 2ffdedf9720c92c204fbccca1c565a4a640dacac Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:09:05 +0000 Subject: [PATCH 57/71] refactor(text-canvas): update type-only imports --- packages/text-canvas/src/circle.ts | 2 +- packages/text-canvas/src/hvline.ts | 2 +- packages/text-canvas/src/line.ts | 2 +- packages/text-canvas/src/rect.ts | 2 +- packages/text-canvas/src/string.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/text-canvas/src/circle.ts b/packages/text-canvas/src/circle.ts index 14dedb11d2..e3aa0d5e64 100644 --- a/packages/text-canvas/src/circle.ts +++ b/packages/text-canvas/src/circle.ts @@ -1,6 +1,6 @@ import type { NumOrString } from "@thi.ng/api"; import { peek } from "@thi.ng/arrays"; -import { Canvas } from "./canvas"; +import type { Canvas } from "./canvas"; import { hline } from "./hvline"; import { charCode, intersectRectCircle } from "./utils"; diff --git a/packages/text-canvas/src/hvline.ts b/packages/text-canvas/src/hvline.ts index 240b2f0365..23e3f1767f 100644 --- a/packages/text-canvas/src/hvline.ts +++ b/packages/text-canvas/src/hvline.ts @@ -1,6 +1,6 @@ import type { NumOrString } from "@thi.ng/api"; import { peek } from "@thi.ng/arrays"; -import { Canvas } from "./canvas"; +import type { Canvas } from "./canvas"; import { charCode } from "./utils"; /** diff --git a/packages/text-canvas/src/line.ts b/packages/text-canvas/src/line.ts index c1f98c2a40..91b0766717 100644 --- a/packages/text-canvas/src/line.ts +++ b/packages/text-canvas/src/line.ts @@ -1,7 +1,7 @@ import type { NumOrString } from "@thi.ng/api"; import { peek } from "@thi.ng/arrays"; import { liangBarsky2Raw } from "@thi.ng/geom-clip-line"; -import { Canvas } from "./canvas"; +import type { Canvas } from "./canvas"; import { charCode } from "./utils"; /** diff --git a/packages/text-canvas/src/rect.ts b/packages/text-canvas/src/rect.ts index 50efad814c..e3b4736e8f 100644 --- a/packages/text-canvas/src/rect.ts +++ b/packages/text-canvas/src/rect.ts @@ -1,6 +1,6 @@ import type { NumOrString } from "@thi.ng/api"; import { peek } from "@thi.ng/arrays"; -import { Canvas } from "./canvas"; +import type { Canvas } from "./canvas"; import { hline, vline } from "./hvline"; import { charCode } from "./utils"; diff --git a/packages/text-canvas/src/string.ts b/packages/text-canvas/src/string.ts index ea47a51e1b..33f49b24d4 100644 --- a/packages/text-canvas/src/string.ts +++ b/packages/text-canvas/src/string.ts @@ -1,5 +1,5 @@ import type { StringFormat } from "./api"; -import { Canvas } from "./canvas"; +import type { Canvas } from "./canvas"; /** * Returns string representation of canvas, optionally using given From 0d23e3c0bad6789c7cbca15c8371d37f0d1fda6d Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:11:00 +0000 Subject: [PATCH 58/71] refactor(vectors): update type-only imports --- packages/vectors/src/api.ts | 2 +- packages/vectors/src/convert.ts | 2 +- packages/vectors/src/point-on-ray.ts | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/vectors/src/api.ts b/packages/vectors/src/api.ts index 848de066f6..b6966dabfe 100644 --- a/packages/vectors/src/api.ts +++ b/packages/vectors/src/api.ts @@ -1,4 +1,4 @@ -import { +import type { ArrayLikeIterable, Fn, Fn2, diff --git a/packages/vectors/src/convert.ts b/packages/vectors/src/convert.ts index f83bd2c041..1d552b8851 100644 --- a/packages/vectors/src/convert.ts +++ b/packages/vectors/src/convert.ts @@ -1,4 +1,4 @@ -import { +import type { FromBVecOpV, MultiFromBVecOpV, MultiToBVecOpV, diff --git a/packages/vectors/src/point-on-ray.ts b/packages/vectors/src/point-on-ray.ts index 897665e7d3..123cd9fe11 100644 --- a/packages/vectors/src/point-on-ray.ts +++ b/packages/vectors/src/point-on-ray.ts @@ -1,4 +1,4 @@ -import { Vec } from "./api"; +import type { ReadonlyVec, Vec } from "./api"; import { maddN, maddN2, maddN3 } from "./maddn"; /** @@ -12,8 +12,8 @@ import { maddN, maddN2, maddN3 } from "./maddn"; */ export const pointOnRay = ( out: Vec | null, - rayOrigin: Vec, - rayDir: Vec, + rayOrigin: ReadonlyVec, + rayDir: ReadonlyVec, dist: number ) => maddN(out, rayDir, dist, rayOrigin); @@ -27,8 +27,8 @@ export const pointOnRay = ( */ export const pointOnRay2 = ( out: Vec | null, - rayOrigin: Vec, - rayDir: Vec, + rayOrigin: ReadonlyVec, + rayDir: ReadonlyVec, dist: number ) => maddN2(out, rayDir, dist, rayOrigin); @@ -42,7 +42,7 @@ export const pointOnRay2 = ( */ export const pointOnRay3 = ( out: Vec | null, - rayOrigin: Vec, - rayDir: Vec, + rayOrigin: ReadonlyVec, + rayDir: ReadonlyVec, dist: number ) => maddN3(out, rayDir, dist, rayOrigin); From b9685a43da40bda78ed5cf78d9dc2bae9a1c44c0 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:11:29 +0000 Subject: [PATCH 59/71] refactor(webgl): update type-only imports --- packages/webgl/src/api/model.ts | 2 +- packages/webgl/src/api/multipass.ts | 2 +- packages/webgl/src/api/shader.ts | 2 +- packages/webgl/src/buffer.ts | 2 +- packages/webgl/src/readpixels.ts | 6 +++++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/webgl/src/api/model.ts b/packages/webgl/src/api/model.ts index a927453dbd..61655312d1 100644 --- a/packages/webgl/src/api/model.ts +++ b/packages/webgl/src/api/model.ts @@ -1,5 +1,5 @@ import type { IObjectOf } from "@thi.ng/api"; -import { AttribPool } from "@thi.ng/vector-pools"; +import type { AttribPool } from "@thi.ng/vector-pools"; import type { IndexBufferSpec, IWebGLBuffer } from "./buffers"; import type { AttribBufferData, IShader, UniformValues } from "./shader"; import type { ITexture } from "./texture"; diff --git a/packages/webgl/src/api/multipass.ts b/packages/webgl/src/api/multipass.ts index 3677d56d2d..dc80a12f44 100644 --- a/packages/webgl/src/api/multipass.ts +++ b/packages/webgl/src/api/multipass.ts @@ -1,5 +1,5 @@ import type { IObjectOf } from "@thi.ng/api"; -import { AttribPool } from "@thi.ng/vector-pools"; +import type { AttribPool } from "@thi.ng/vector-pools"; import type { IFbo, IndexBufferSpec } from "./buffers"; import type { InstancingSpec, ModelAttributeSpecs, ModelSpec } from "./model"; import type { diff --git a/packages/webgl/src/api/shader.ts b/packages/webgl/src/api/shader.ts index d3e209c58d..93c79d1cb0 100644 --- a/packages/webgl/src/api/shader.ts +++ b/packages/webgl/src/api/shader.ts @@ -12,7 +12,7 @@ import type { import type { Func, Sym } from "@thi.ng/shader-ast"; import type { GLSLTarget } from "@thi.ng/shader-ast-glsl"; import type { ReadonlyVec } from "@thi.ng/vectors"; -import { BlendEquation, BlendFunc } from "./blend"; +import type { BlendEquation, BlendFunc } from "./blend"; import type { ExtensionBehaviors } from "./ext"; import type { GLIntVec, diff --git a/packages/webgl/src/buffer.ts b/packages/webgl/src/buffer.ts index c9c01209ed..358536a67e 100644 --- a/packages/webgl/src/buffer.ts +++ b/packages/webgl/src/buffer.ts @@ -1,5 +1,5 @@ import type { TypedArray } from "@thi.ng/api"; -import { AttribPool } from "@thi.ng/vector-pools"; +import type { AttribPool } from "@thi.ng/vector-pools"; import type { IndexBufferSpec, IWebGLBuffer } from "./api/buffers"; import { DrawMode, diff --git a/packages/webgl/src/readpixels.ts b/packages/webgl/src/readpixels.ts index 8d18aa59b2..30f7e6eaff 100644 --- a/packages/webgl/src/readpixels.ts +++ b/packages/webgl/src/readpixels.ts @@ -1,4 +1,8 @@ -import { ITexture, ReadableTextureFormat, TextureType } from "./api/texture"; +import type { + ITexture, + ReadableTextureFormat, + TextureType, +} from "./api/texture"; import { FBO } from "./fbo"; export const readPixels = < From ea978796b42e4e60f371862ba10d1f4fcea426ea Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:12:09 +0000 Subject: [PATCH 60/71] refactor(vector-pools): update type-only imports --- packages/vector-pools/src/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vector-pools/src/api.ts b/packages/vector-pools/src/api.ts index 813aa8e9c6..25c5d03e5a 100644 --- a/packages/vector-pools/src/api.ts +++ b/packages/vector-pools/src/api.ts @@ -7,7 +7,7 @@ import { Type, TypedArray, } from "@thi.ng/api"; -import { MemPool, MemPoolOpts } from "@thi.ng/malloc"; +import type { MemPool, MemPoolOpts } from "@thi.ng/malloc"; import type { ReadonlyVec, StridedVec, Vec } from "@thi.ng/vectors"; export interface AttribSpec { From 2f82a4f119617b0d09c62794d8e7b9c2438c8af7 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:12:36 +0000 Subject: [PATCH 61/71] refactor(viz): update type-only imports --- packages/viz/src/plot/bar.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/viz/src/plot/bar.ts b/packages/viz/src/plot/bar.ts index af2f56a884..cb395111f1 100644 --- a/packages/viz/src/plot/bar.ts +++ b/packages/viz/src/plot/bar.ts @@ -1,7 +1,7 @@ -import { Fn3 } from "@thi.ng/api"; +import type { Fn3 } from "@thi.ng/api"; import { isFunction } from "@thi.ng/checks"; import { map } from "@thi.ng/transducers"; -import { DomainValues, PlotFn } from "../api"; +import type { DomainValues, PlotFn } from "../api"; import { valueMapper } from "./utils"; export interface BarPlotOpts { From 479706ba9a46dacf60a1733ffcdf4232ebe5655f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:13:21 +0000 Subject: [PATCH 62/71] refactor(rstream-log): update type-only imports --- packages/rstream-log-file/src/index.ts | 2 +- packages/rstream-log/src/api.ts | 2 +- packages/rstream-log/src/xform/filter.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/rstream-log-file/src/index.ts b/packages/rstream-log-file/src/index.ts index 91f127aac9..a3cb9653f3 100644 --- a/packages/rstream-log-file/src/index.ts +++ b/packages/rstream-log-file/src/index.ts @@ -1,5 +1,5 @@ -import { appendFile } from "fs"; import type { ISubscriber } from "@thi.ng/rstream"; +import { appendFile } from "fs"; export const writeFile = (path: string): ISubscriber => ({ next(msg) { diff --git a/packages/rstream-log/src/api.ts b/packages/rstream-log/src/api.ts index e2f04ce648..5a332df270 100644 --- a/packages/rstream-log/src/api.ts +++ b/packages/rstream-log/src/api.ts @@ -1,4 +1,4 @@ -import { IID, ILogger as APILogger, LogLevel } from "@thi.ng/api"; +import type { IID, ILogger as APILogger, LogLevel } from "@thi.ng/api"; import type { ISubscribable } from "@thi.ng/rstream"; export interface LogEntry extends Array { diff --git a/packages/rstream-log/src/xform/filter.ts b/packages/rstream-log/src/xform/filter.ts index 6fa77a26e3..1ba62588aa 100644 --- a/packages/rstream-log/src/xform/filter.ts +++ b/packages/rstream-log/src/xform/filter.ts @@ -1,7 +1,7 @@ -import { LogLevel } from "@thi.ng/api"; +import type { LogLevel } from "@thi.ng/api"; import { isString } from "@thi.ng/checks"; -import { filter } from "@thi.ng/transducers"; import type { Transducer } from "@thi.ng/transducers"; +import { filter } from "@thi.ng/transducers"; import type { LogEntry } from "../api"; export const onlyLevel = (level: LogLevel): Transducer => From ba709985fa3d342e8f2aec081b09a1df3c7e5e0f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:14:16 +0000 Subject: [PATCH 63/71] refactor(rstream-query): update type-only imports --- packages/rstream-query/src/xforms.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rstream-query/src/xforms.ts b/packages/rstream-query/src/xforms.ts index 087cdf1d34..5d895960ac 100644 --- a/packages/rstream-query/src/xforms.ts +++ b/packages/rstream-query/src/xforms.ts @@ -12,7 +12,7 @@ import { Transducer, } from "@thi.ng/transducers"; import type { BindFn, Edit, Solutions, Triple, TripleIds } from "./api"; -import { TripleStore } from "./store"; +import type { TripleStore } from "./store"; export const intersect2: Transducer, TripleIds> = comp( map(({ a, b }) => intersection(a, b)), From 615761b5b0feeb359ca686ad5921223b4ffe42ab Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:14:38 +0000 Subject: [PATCH 64/71] refactor(rstream-csp): update type-only imports --- packages/rstream-csp/src/from/channel.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rstream-csp/src/from/channel.ts b/packages/rstream-csp/src/from/channel.ts index c168aa82e5..ea86aa2faf 100644 --- a/packages/rstream-csp/src/from/channel.ts +++ b/packages/rstream-csp/src/from/channel.ts @@ -1,6 +1,6 @@ -import { Channel } from "@thi.ng/csp"; -import { LOGGER, Stream } from "@thi.ng/rstream"; +import type { Channel } from "@thi.ng/csp"; import type { CommonOpts } from "@thi.ng/rstream"; +import { LOGGER, Stream } from "@thi.ng/rstream"; export interface FromChannelOpts extends CommonOpts { /** From 34bb05c3cc929373a03fcb743438f72e64771b1b Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:15:35 +0000 Subject: [PATCH 65/71] refactor(pointfree): update type-only imports --- packages/pointfree/src/io.ts | 2 +- packages/pointfree/src/string.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pointfree/src/io.ts b/packages/pointfree/src/io.ts index c16db179c9..95e679e442 100644 --- a/packages/pointfree/src/io.ts +++ b/packages/pointfree/src/io.ts @@ -1,5 +1,5 @@ -import { $ } from "./safe"; import type { StackContext } from "./api"; +import { $ } from "./safe"; //////////////////// I/O //////////////////// diff --git a/packages/pointfree/src/string.ts b/packages/pointfree/src/string.ts index 4a29da919b..fa5b244343 100644 --- a/packages/pointfree/src/string.ts +++ b/packages/pointfree/src/string.ts @@ -1,4 +1,4 @@ -import { StackContext } from "./api"; +import type { StackContext } from "./api"; import { $n, $ } from "./safe"; /** From 97a4e43df5a6503aed68fd13c22a54e482a1a50c Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:16:06 +0000 Subject: [PATCH 66/71] refactor(ramp): update type-only imports --- packages/ramp/src/hermite.ts | 2 +- packages/ramp/src/linear.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ramp/src/hermite.ts b/packages/ramp/src/hermite.ts index 50bbecfa78..db6bf35459 100644 --- a/packages/ramp/src/hermite.ts +++ b/packages/ramp/src/hermite.ts @@ -8,8 +8,8 @@ import { normRange, partition, } from "@thi.ng/transducers"; -import { ARamp } from "./aramp"; import type { Vec } from "@thi.ng/vectors"; +import { ARamp } from "./aramp"; export const hermite = (stops?: Vec[]) => new HermiteRamp(stops); diff --git a/packages/ramp/src/linear.ts b/packages/ramp/src/linear.ts index 5e60f20882..cea0cad3de 100644 --- a/packages/ramp/src/linear.ts +++ b/packages/ramp/src/linear.ts @@ -1,6 +1,6 @@ import { fit } from "@thi.ng/math"; -import { ARamp } from "./aramp"; import type { Vec } from "@thi.ng/vectors"; +import { ARamp } from "./aramp"; export const linear = (stops?: Vec[]) => new LinearRamp(stops); From 203732684736c0a1ef87af654947b90edeffaf9d Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:16:42 +0000 Subject: [PATCH 67/71] refactor(rdom-components): update type-only imports --- packages/rdom-canvas/src/index.ts | 3 ++- packages/rdom-components/src/accordion.ts | 2 +- packages/rdom-components/src/dropdown.ts | 2 +- packages/rdom-components/src/tabs.ts | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/rdom-canvas/src/index.ts b/packages/rdom-canvas/src/index.ts index 50fc14b7a9..da37d554bc 100644 --- a/packages/rdom-canvas/src/index.ts +++ b/packages/rdom-canvas/src/index.ts @@ -30,7 +30,8 @@ export const $canvas = ( attribs?: any ) => $sub(body, new $Canvas(size, attribs)); -export class $Canvas extends Component +export class $Canvas + extends Component implements IMountWithState { el?: HTMLCanvasElement; ctx?: CanvasRenderingContext2D; diff --git a/packages/rdom-components/src/accordion.ts b/packages/rdom-components/src/accordion.ts index 2826ffd946..dad7c1e034 100644 --- a/packages/rdom-components/src/accordion.ts +++ b/packages/rdom-components/src/accordion.ts @@ -1,7 +1,7 @@ import type { Fn, Fn4 } from "@thi.ng/api"; import { Attribs, div, section } from "@thi.ng/hiccup-html"; import { $list, $promise, ComponentLike } from "@thi.ng/rdom"; -import { Subscription } from "@thi.ng/rstream"; +import type { Subscription } from "@thi.ng/rstream"; import { dedupe, map, range } from "@thi.ng/transducers"; export interface AccordionOpts { diff --git a/packages/rdom-components/src/dropdown.ts b/packages/rdom-components/src/dropdown.ts index bd068435b3..1c807c982a 100644 --- a/packages/rdom-components/src/dropdown.ts +++ b/packages/rdom-components/src/dropdown.ts @@ -1,7 +1,7 @@ import type { Fn } from "@thi.ng/api"; import { option, select, SelectAttribs } from "@thi.ng/hiccup-html"; import { $input, $list } from "@thi.ng/rdom"; -import { ISubscribable, Subscription } from "@thi.ng/rstream"; +import type { ISubscribable, Subscription } from "@thi.ng/rstream"; export interface DropdownOpts { attribs: Partial; diff --git a/packages/rdom-components/src/tabs.ts b/packages/rdom-components/src/tabs.ts index 555fb43850..3b2cf8d18a 100644 --- a/packages/rdom-components/src/tabs.ts +++ b/packages/rdom-components/src/tabs.ts @@ -1,7 +1,7 @@ import type { Fn, Fn4 } from "@thi.ng/api"; import { Attribs, div, section } from "@thi.ng/hiccup-html"; import { $list, $switch, ComponentLike } from "@thi.ng/rdom"; -import { Subscription } from "@thi.ng/rstream"; +import type { Subscription } from "@thi.ng/rstream"; import { dedupe, map, range } from "@thi.ng/transducers"; export interface TabOpts { From b22aa300e30c7f2723c489dcfda78a947301fa54 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:19:48 +0000 Subject: [PATCH 68/71] refactor: update type-only imports in remaining pkgs --- packages/dgraph-dot/src/index.ts | 2 +- packages/dsp/src/gen/iterable.ts | 2 +- packages/ecs/src/ecs.ts | 2 +- packages/geom-hull/test/index.ts | 2 +- packages/geom-io-obj/src/parser.ts | 4 ++-- packages/geom-isec/src/line-poly.ts | 2 +- packages/geom-subdiv-curve/src/subdivide.ts | 2 +- packages/geom-voronoi/src/index.ts | 2 +- packages/hdiff/src/theme.ts | 2 +- packages/hiccup-html/src/table.ts | 7 ++++++- packages/iges/src/index.ts | 2 +- packages/memoize/src/do-once.ts | 2 +- packages/pixel/src/float.ts | 2 +- packages/shader-ast-js/src/env/bvec.ts | 2 +- packages/system/src/api.ts | 2 +- 15 files changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/dgraph-dot/src/index.ts b/packages/dgraph-dot/src/index.ts index 3493a54e0b..2ac22bed45 100644 --- a/packages/dgraph-dot/src/index.ts +++ b/packages/dgraph-dot/src/index.ts @@ -1,5 +1,5 @@ import type { Fn, IObjectOf } from "@thi.ng/api"; -import { DGraph } from "@thi.ng/dgraph"; +import type { DGraph } from "@thi.ng/dgraph"; import { Edge, Graph, GraphAttribs, Node, serializeGraph } from "@thi.ng/dot"; export interface DGraphDotOpts { diff --git a/packages/dsp/src/gen/iterable.ts b/packages/dsp/src/gen/iterable.ts index 46e4af22fc..c3e12ecf9d 100644 --- a/packages/dsp/src/gen/iterable.ts +++ b/packages/dsp/src/gen/iterable.ts @@ -1,4 +1,4 @@ -import { IGen } from "../api"; +import type { IGen } from "../api"; /** * Wraps given ES6 iterable to provide full {@link IGen} implementation. diff --git a/packages/ecs/src/ecs.ts b/packages/ecs/src/ecs.ts index ca8351b516..53f0414189 100644 --- a/packages/ecs/src/ecs.ts +++ b/packages/ecs/src/ecs.ts @@ -11,7 +11,7 @@ import { isArray, isString } from "@thi.ng/checks"; import { IDGen } from "@thi.ng/idgen"; import { IMemPoolArray, NativePool } from "@thi.ng/malloc"; import { filter } from "@thi.ng/transducers"; -import { +import type { ComponentID, ECSOpts, GroupOpts, diff --git a/packages/geom-hull/test/index.ts b/packages/geom-hull/test/index.ts index ce01da8a15..f354639445 100644 --- a/packages/geom-hull/test/index.ts +++ b/packages/geom-hull/test/index.ts @@ -1,5 +1,5 @@ // import * as assert from "assert"; -// import * as gh from "../src/index"; +// import * as gh from "../src"; describe("geom-hull", () => { it("tests pending"); diff --git a/packages/geom-io-obj/src/parser.ts b/packages/geom-io-obj/src/parser.ts index 4fab1d6737..722703d76f 100644 --- a/packages/geom-io-obj/src/parser.ts +++ b/packages/geom-io-obj/src/parser.ts @@ -1,5 +1,5 @@ import { assert } from "@thi.ng/api"; -import { Vec } from "@thi.ng/vectors"; +import type { Vec } from "@thi.ng/vectors"; import type { OBJFace, OBJGroup, OBJModel, ParseOpts } from "./api"; export const parseOBJ = (src: string, opts?: Partial) => { @@ -35,7 +35,7 @@ export const parseOBJ = (src: string, opts?: Partial) => { (currGroup = { id, smooth: false, - faces: faces = [], + faces: (faces = []), lines: [], mtl: currGroup ? currGroup.mtl : undefined, }) diff --git a/packages/geom-isec/src/line-poly.ts b/packages/geom-isec/src/line-poly.ts index 1dadafc58c..278d42a7c4 100644 --- a/packages/geom-isec/src/line-poly.ts +++ b/packages/geom-isec/src/line-poly.ts @@ -1,4 +1,4 @@ -import { IntersectionResult } from "@thi.ng/geom-api"; +import type { IntersectionResult } from "@thi.ng/geom-api"; import { mag, normalize, ReadonlyVec, sub } from "@thi.ng/vectors"; import { intersectRayPolylineAll } from "./ray-poly"; diff --git a/packages/geom-subdiv-curve/src/subdivide.ts b/packages/geom-subdiv-curve/src/subdivide.ts index 2f074a4b6f..a49780950b 100644 --- a/packages/geom-subdiv-curve/src/subdivide.ts +++ b/packages/geom-subdiv-curve/src/subdivide.ts @@ -1,3 +1,4 @@ +import type { SubdivKernel } from "@thi.ng/geom-api"; import { comp, mapcatIndexed, @@ -5,7 +6,6 @@ import { push, transduce, } from "@thi.ng/transducers"; -import type { SubdivKernel } from "@thi.ng/geom-api"; import type { ReadonlyVec, Vec } from "@thi.ng/vectors"; /** diff --git a/packages/geom-voronoi/src/index.ts b/packages/geom-voronoi/src/index.ts index 47f03f55bd..e8ac61711b 100644 --- a/packages/geom-voronoi/src/index.ts +++ b/packages/geom-voronoi/src/index.ts @@ -1,3 +1,4 @@ +import type { IObjectOf, Pair } from "@thi.ng/api"; import { isNumber } from "@thi.ng/checks"; import { liangBarsky2 } from "@thi.ng/geom-clip-line"; import { sutherlandHodgeman } from "@thi.ng/geom-clip-poly"; @@ -17,7 +18,6 @@ import { VecPair, ZERO2, } from "@thi.ng/vectors"; -import type { IObjectOf, Pair } from "@thi.ng/api"; export type Visitor = ( e: Edge>, diff --git a/packages/hdiff/src/theme.ts b/packages/hdiff/src/theme.ts index 59bd6df32f..a539a5d9f5 100644 --- a/packages/hdiff/src/theme.ts +++ b/packages/hdiff/src/theme.ts @@ -1,5 +1,5 @@ import { css } from "@thi.ng/hiccup-css"; -import { BgFg, BgFgBorder, Theme } from "./api"; +import type { BgFg, BgFgBorder, Theme } from "./api"; const block = { display: "block" }; const none = { display: "none" }; diff --git a/packages/hiccup-html/src/table.ts b/packages/hiccup-html/src/table.ts index c5c6d76a7d..725427427c 100644 --- a/packages/hiccup-html/src/table.ts +++ b/packages/hiccup-html/src/table.ts @@ -1,4 +1,9 @@ -import { Attribs, AttribVal, MultiStringAttrib, NumericAttrib } from "./api"; +import type { + Attribs, + AttribVal, + MultiStringAttrib, + NumericAttrib, +} from "./api"; import { defElement, defElements } from "./def"; export const [table, tbody, tfoot, thead, tr, caption] = defElements([ diff --git a/packages/iges/src/index.ts b/packages/iges/src/index.ts index cbbb72dfe5..8bf7bf891e 100644 --- a/packages/iges/src/index.ts +++ b/packages/iges/src/index.ts @@ -12,6 +12,7 @@ import { wordWrap, wrapSides, } from "@thi.ng/transducers"; +import type { ReadonlyVec } from "@thi.ng/vectors"; import { BooleanNode, BooleanTree, @@ -28,7 +29,6 @@ import { Type, Unit, } from "./api"; -import type { ReadonlyVec } from "@thi.ng/vectors"; // https://wiki.eclipse.org/IGES_file_Specification // http://paulbourke.net/dataformats/iges/IGES.pdf diff --git a/packages/memoize/src/do-once.ts b/packages/memoize/src/do-once.ts index 13e6a24b6e..b59559cbb6 100644 --- a/packages/memoize/src/do-once.ts +++ b/packages/memoize/src/do-once.ts @@ -1,5 +1,5 @@ import type { Fn } from "@thi.ng/api"; -import { MapLike } from "./api"; +import type { MapLike } from "./api"; /** * Similar to {@link memoize1}, however optimized for side effects only, i.e. diff --git a/packages/pixel/src/float.ts b/packages/pixel/src/float.ts index bf84ddc974..55442252a9 100644 --- a/packages/pixel/src/float.ts +++ b/packages/pixel/src/float.ts @@ -1,7 +1,7 @@ import { assert, Fn, NumericArray } from "@thi.ng/api"; import { isNumber } from "@thi.ng/checks"; import { clamp01 } from "@thi.ng/math"; -import { +import type { BlendFnFloat, BlitOpts, FloatFormat, diff --git a/packages/shader-ast-js/src/env/bvec.ts b/packages/shader-ast-js/src/env/bvec.ts index 2b503edae0..781abface8 100644 --- a/packages/shader-ast-js/src/env/bvec.ts +++ b/packages/shader-ast-js/src/env/bvec.ts @@ -9,7 +9,7 @@ import { some3, some4, } from "@thi.ng/vectors"; -import { JSBuiltinsBool } from "../api"; +import type { JSBuiltinsBool } from "../api"; export const BVEC2: JSBuiltinsBool = { all: every2, diff --git a/packages/system/src/api.ts b/packages/system/src/api.ts index 3f07f303ab..bfab15ba57 100644 --- a/packages/system/src/api.ts +++ b/packages/system/src/api.ts @@ -1,4 +1,4 @@ -import type { Keys, Fn } from "@thi.ng/api"; +import type { Fn, Keys } from "@thi.ng/api"; export interface ILifecycle { /** From f0702f0b60bfdbd1b6b0f7af7d511df7b674b6a0 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 00:21:01 +0000 Subject: [PATCH 69/71] refactor(tools): update type-only imports --- tools/src/api.ts | 2 +- tools/src/config.ts | 11 +++-------- tools/src/partials/blog.ts | 4 ++-- tools/src/partials/table.ts | 8 ++++---- tools/src/readme-examples.ts | 2 +- tools/src/readme.ts | 2 +- tools/src/search.ts | 2 +- 7 files changed, 13 insertions(+), 18 deletions(-) diff --git a/tools/src/api.ts b/tools/src/api.ts index b6eda24b3c..faa138d2f1 100644 --- a/tools/src/api.ts +++ b/tools/src/api.ts @@ -1,4 +1,4 @@ -import { IObjectOf } from "@thi.ng/api"; +import type { IObjectOf } from "@thi.ng/api"; export const RE_PKG = /@thi\.ng\/[a-z0-9-]+/g; export const RE_USER = /@([a-z0-9_-]+)/gi; diff --git a/tools/src/config.ts b/tools/src/config.ts index efaa9d9c55..667073bb8e 100644 --- a/tools/src/config.ts +++ b/tools/src/config.ts @@ -1,9 +1,4 @@ -import { - BaseConfig, - Config, - Package, - PackageMeta -} from "./api"; +import type { BaseConfig, Config, Package, PackageMeta } from "./api"; import { readJSON } from "./io"; export let CONFIG: Config; @@ -14,13 +9,13 @@ export const initConfig = (configPath: string, pkgPath: string) => { const meta = { branch: "develop", year: 2016, - ...root["thi.ng"] + ...root["thi.ng"], }; CONFIG = { ...conf, root, meta, assetURL: `${conf.assetURL}/${meta.branch}/assets`, - branchURL: `${conf.repoURL}/tree/${meta.branch}` + branchURL: `${conf.repoURL}/tree/${meta.branch}`, }; }; diff --git a/tools/src/partials/blog.ts b/tools/src/partials/blog.ts index 1e844b61ca..97219e8c4c 100644 --- a/tools/src/partials/blog.ts +++ b/tools/src/partials/blog.ts @@ -1,4 +1,4 @@ -import { BlogPost } from "../api"; +import type { BlogPost } from "../api"; import { link } from "./link"; import { list } from "./list"; @@ -7,6 +7,6 @@ export const blogPosts = (posts: BlogPost[]) => { return [ "### Blog posts", "", - list(posts.map(({ title, url }) => link(title, url))) + list(posts.map(({ title, url }) => link(title, url))), ].join("\n"); }; diff --git a/tools/src/partials/table.ts b/tools/src/partials/table.ts index 4e8f45e0dc..112464455e 100644 --- a/tools/src/partials/table.ts +++ b/tools/src/partials/table.ts @@ -1,4 +1,4 @@ -import { IObjectOf, Keys } from "@thi.ng/api"; +import type { IObjectOf, Keys } from "@thi.ng/api"; import { juxt } from "@thi.ng/compose"; import { repeat } from "@thi.ng/strings"; import { Border, tableCanvas, toString } from "@thi.ng/text-canvas"; @@ -9,7 +9,7 @@ import { max, multiplex, scan, - transduce + transduce, } from "@thi.ng/transducers"; const maxLen = (key: string) => @@ -36,14 +36,14 @@ export const table = >( // @ts-ignore juxt(...keys.map((k) => (x: any) => x[k])), items - ) + ), ]; return toString( tableCanvas( { cols: [...map((width) => ({ width }), colWidths)], padding: [1, 0], - border: Border.V + border: Border.V, }, rows ) diff --git a/tools/src/readme-examples.ts b/tools/src/readme-examples.ts index fd4e569814..1636c2a0c7 100644 --- a/tools/src/readme-examples.ts +++ b/tools/src/readme-examples.ts @@ -1,4 +1,4 @@ -import { IObjectOf } from "@thi.ng/api"; +import type { IObjectOf } from "@thi.ng/api"; import { idgen } from "@thi.ng/idgen"; import { Z3 } from "@thi.ng/strings"; import { diff --git a/tools/src/readme.ts b/tools/src/readme.ts index ee99473328..c418cb395c 100644 --- a/tools/src/readme.ts +++ b/tools/src/readme.ts @@ -1,4 +1,4 @@ -import { Fn0, IObjectOf, Nullable } from "@thi.ng/api"; +import type { Fn0, IObjectOf, Nullable } from "@thi.ng/api"; import { writeFileSync } from "fs"; import { RE_PARTIAL } from "./api"; import { CONFIG, initConfig } from "./config"; diff --git a/tools/src/search.ts b/tools/src/search.ts index 71b4f0fb8b..c141a6b008 100644 --- a/tools/src/search.ts +++ b/tools/src/search.ts @@ -1,5 +1,5 @@ import type { IObjectOf } from "@thi.ng/api"; -import { MultiTrie } from "@thi.ng/associative"; +import type { MultiTrie } from "@thi.ng/associative"; import { compareByKeys2 } from "@thi.ng/compare"; type PackedTrie = [IObjectOf, number[]?]; From 31f8d174c9bf2cd6b220edc581f3d1157615b7c7 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 01:00:16 +0000 Subject: [PATCH 70/71] docs(sax): update pkg meta --- packages/sax/README.md | 1 + packages/sax/package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sax/README.md b/packages/sax/README.md index 2864460e5f..e023d66c9d 100644 --- a/packages/sax/README.md +++ b/packages/sax/README.md @@ -53,6 +53,7 @@ well (see SVG parsing example further below). The choice is yours! ### Related packages - [@thi.ng/hiccup-svg](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup-svg) - SVG element functions for [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup) & [@thi.ng/hdom](https://github.com/thi-ng/umbrella/tree/develop/packages/hdom) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers) - Lightweight transducer implementations for ES6 / TypeScript - [@thi.ng/transducers-fsm](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers-fsm) - Transducer-based Finite State Machine transformer ## Installation diff --git a/packages/sax/package.json b/packages/sax/package.json index 2306ccce84..6afd31460b 100644 --- a/packages/sax/package.json +++ b/packages/sax/package.json @@ -74,7 +74,7 @@ "thi.ng": { "related": [ "hiccup-svg", - "transducer", + "transducers", "transducers-fsm" ], "year": 2018 From b735cef6fb43db0f54ea8bb2a840d279225e95e0 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 7 Dec 2020 01:04:34 +0000 Subject: [PATCH 71/71] Publish - @thi.ng/adjacency@0.1.67 - @thi.ng/api@6.13.4 - @thi.ng/arrays@0.8.4 - @thi.ng/associative@5.0.11 - @thi.ng/atom@4.1.24 - @thi.ng/bench@2.0.24 - @thi.ng/bencode@0.3.43 - @thi.ng/binary@2.0.19 - @thi.ng/bitfield@0.3.25 - @thi.ng/cache@1.0.63 - @thi.ng/color@1.3.2 - @thi.ng/colored-noise@0.1.6 - @thi.ng/compare@1.3.20 - @thi.ng/compose@1.4.21 - @thi.ng/csp@1.1.43 - @thi.ng/csv@0.1.2 - @thi.ng/date@0.2.3 - @thi.ng/dcons@2.3.3 - @thi.ng/defmulti@1.3.2 - @thi.ng/dgraph-dot@0.1.31 - @thi.ng/dgraph@1.3.2 - @thi.ng/diff@3.2.35 - @thi.ng/dl-asset@0.4.9 - @thi.ng/dlogic@1.0.35 - @thi.ng/dot@1.2.21 - @thi.ng/dsp-io-wav@0.1.33 - @thi.ng/dsp@2.1.5 - @thi.ng/dual-algebra@0.1.4 - @thi.ng/dynvar@0.1.27 - @thi.ng/ecs@0.4.3 - @thi.ng/egf@0.3.4 - @thi.ng/fsm@2.4.29 - @thi.ng/geom-accel@2.1.28 - @thi.ng/geom-api@1.1.4 - @thi.ng/geom-arc@0.3.17 - @thi.ng/geom-clip-line@1.2.13 - @thi.ng/geom-clip-poly@1.0.38 - @thi.ng/geom-closest-point@0.5.4 - @thi.ng/geom-fuzz@0.1.24 - @thi.ng/geom-hull@0.0.70 - @thi.ng/geom-io-obj@0.1.28 - @thi.ng/geom-isec@0.7.2 - @thi.ng/geom-isoline@0.1.68 - @thi.ng/geom-poly-utils@0.2.2 - @thi.ng/geom-resample@0.2.50 - @thi.ng/geom-splines@0.5.37 - @thi.ng/geom-subdiv-curve@0.1.67 - @thi.ng/geom-tessellate@0.2.51 - @thi.ng/geom-voronoi@0.2.13 - @thi.ng/geom@1.13.3 - @thi.ng/gp@0.1.35 - @thi.ng/grid-iterators@0.4.15 - @thi.ng/hdiff@0.1.19 - @thi.ng/hdom-canvas@3.0.23 - @thi.ng/hdom-components@4.0.17 - @thi.ng/hdom-mock@1.1.45 - @thi.ng/hdom@8.2.13 - @thi.ng/heaps@1.2.28 - @thi.ng/hiccup-canvas@1.1.13 - @thi.ng/hiccup-carbon-icons@2.0.7 - @thi.ng/hiccup-css@1.1.42 - @thi.ng/hiccup-html@0.3.9 - @thi.ng/hiccup-markdown@1.2.38 - @thi.ng/hiccup-svg@3.6.5 - @thi.ng/hiccup@3.6.4 - @thi.ng/idgen@0.2.27 - @thi.ng/iges@1.1.52 - @thi.ng/imgui@0.2.44 - @thi.ng/interceptors@2.2.35 - @thi.ng/intervals@2.1.2 - @thi.ng/iterators@5.1.43 - @thi.ng/leb128@1.0.37 - @thi.ng/lsys@0.2.65 - @thi.ng/malloc@4.2.3 - @thi.ng/math@2.2.2 - @thi.ng/matrices@0.6.37 - @thi.ng/memoize@2.1.6 - @thi.ng/mime@0.1.25 - @thi.ng/morton@2.0.28 - @thi.ng/oquery@0.2.0 - @thi.ng/parse@0.9.7 - @thi.ng/paths@4.1.10 - @thi.ng/pixel@0.4.9 - @thi.ng/pointfree-lang@1.4.17 - @thi.ng/pointfree@2.0.18 - @thi.ng/poisson@1.1.21 - @thi.ng/porter-duff@0.1.34 - @thi.ng/ramp@0.1.39 - @thi.ng/random@2.1.2 - @thi.ng/range-coder@1.0.62 - @thi.ng/rdom-canvas@0.1.21 - @thi.ng/rdom-components@0.1.18 - @thi.ng/rdom@0.3.0 - @thi.ng/resolve-map@4.2.9 - @thi.ng/router@2.0.36 - @thi.ng/rstream-csp@2.0.45 - @thi.ng/rstream-dot@1.1.52 - @thi.ng/rstream-gestures@2.0.45 - @thi.ng/rstream-graph@3.2.46 - @thi.ng/rstream-log-file@0.1.67 - @thi.ng/rstream-log@3.1.52 - @thi.ng/rstream-query@1.1.52 - @thi.ng/rstream@5.0.10 - @thi.ng/sax@1.1.42 - @thi.ng/scenegraph@0.3.11 - @thi.ng/seq@0.2.27 - @thi.ng/sexpr@0.2.30 - @thi.ng/shader-ast-glsl@0.2.14 - @thi.ng/shader-ast-js@0.5.12 - @thi.ng/shader-ast-stdlib@0.5.6 - @thi.ng/shader-ast@0.7.6 - @thi.ng/simd@0.4.10 - @thi.ng/soa@0.1.41 - @thi.ng/sparse@0.1.58 - @thi.ng/strings@1.11.2 - @thi.ng/system@0.2.31 - @thi.ng/text-canvas@0.2.35 - @thi.ng/transducers-binary@0.5.33 - @thi.ng/transducers-fsm@1.1.42 - @thi.ng/transducers-hdom@2.0.74 - @thi.ng/transducers-patch@0.1.33 - @thi.ng/transducers-stats@1.1.43 - @thi.ng/transducers@7.5.2 - @thi.ng/vclock@0.1.1 - @thi.ng/vector-pools@1.0.51 - @thi.ng/vectors@4.8.2 - @thi.ng/viz@0.2.2 - @thi.ng/webgl-msdf@0.1.65 - @thi.ng/webgl-shadertoy@0.2.52 - @thi.ng/webgl@3.3.8 - @thi.ng/zipper@0.1.29 --- packages/adjacency/CHANGELOG.md | 8 ++++ packages/adjacency/package.json | 14 +++---- packages/api/CHANGELOG.md | 8 ++++ packages/api/package.json | 2 +- packages/arrays/CHANGELOG.md | 8 ++++ packages/arrays/package.json | 8 ++-- packages/associative/CHANGELOG.md | 8 ++++ packages/associative/package.json | 12 +++--- packages/atom/CHANGELOG.md | 8 ++++ packages/atom/package.json | 6 +-- packages/bench/CHANGELOG.md | 8 ++++ packages/bench/package.json | 2 +- packages/bencode/CHANGELOG.md | 8 ++++ packages/bencode/package.json | 12 +++--- packages/binary/CHANGELOG.md | 8 ++++ packages/binary/package.json | 4 +- packages/bitfield/CHANGELOG.md | 8 ++++ packages/bitfield/package.json | 8 ++-- packages/cache/CHANGELOG.md | 8 ++++ packages/cache/package.json | 8 ++-- packages/color/CHANGELOG.md | 8 ++++ packages/color/package.json | 16 ++++---- packages/colored-noise/CHANGELOG.md | 8 ++++ packages/colored-noise/package.json | 18 ++++----- packages/compare/CHANGELOG.md | 8 ++++ packages/compare/package.json | 4 +- packages/compose/CHANGELOG.md | 8 ++++ packages/compose/package.json | 4 +- packages/csp/CHANGELOG.md | 8 ++++ packages/csp/package.json | 10 ++--- packages/csv/CHANGELOG.md | 8 ++++ packages/csv/package.json | 8 ++-- packages/date/CHANGELOG.md | 8 ++++ packages/date/package.json | 4 +- packages/dcons/CHANGELOG.md | 8 ++++ packages/dcons/package.json | 10 ++--- packages/defmulti/CHANGELOG.md | 8 ++++ packages/defmulti/package.json | 4 +- packages/dgraph-dot/CHANGELOG.md | 8 ++++ packages/dgraph-dot/package.json | 8 ++-- packages/dgraph/CHANGELOG.md | 8 ++++ packages/dgraph/package.json | 8 ++-- packages/diff/CHANGELOG.md | 8 ++++ packages/diff/package.json | 4 +- packages/dl-asset/CHANGELOG.md | 8 ++++ packages/dl-asset/package.json | 6 +-- packages/dlogic/CHANGELOG.md | 8 ++++ packages/dlogic/package.json | 4 +- packages/dot/CHANGELOG.md | 8 ++++ packages/dot/package.json | 4 +- packages/dsp-io-wav/CHANGELOG.md | 8 ++++ packages/dsp-io-wav/package.json | 10 ++--- packages/dsp/CHANGELOG.md | 8 ++++ packages/dsp/package.json | 10 ++--- packages/dual-algebra/CHANGELOG.md | 8 ++++ packages/dual-algebra/package.json | 4 +- packages/dynvar/CHANGELOG.md | 8 ++++ packages/dynvar/package.json | 4 +- packages/ecs/CHANGELOG.md | 8 ++++ packages/ecs/package.json | 16 ++++---- packages/egf/CHANGELOG.md | 8 ++++ packages/egf/package.json | 12 +++--- packages/fsm/CHANGELOG.md | 8 ++++ packages/fsm/package.json | 10 ++--- packages/geom-accel/CHANGELOG.md | 8 ++++ packages/geom-accel/package.json | 18 ++++----- packages/geom-api/CHANGELOG.md | 8 ++++ packages/geom-api/package.json | 6 +-- packages/geom-arc/CHANGELOG.md | 8 ++++ packages/geom-arc/package.json | 10 ++--- packages/geom-clip-line/CHANGELOG.md | 8 ++++ packages/geom-clip-line/package.json | 8 ++-- packages/geom-clip-poly/CHANGELOG.md | 8 ++++ packages/geom-clip-poly/package.json | 10 ++--- packages/geom-closest-point/CHANGELOG.md | 8 ++++ packages/geom-closest-point/package.json | 8 ++-- packages/geom-fuzz/CHANGELOG.md | 8 ++++ packages/geom-fuzz/package.json | 22 +++++------ packages/geom-hull/CHANGELOG.md | 8 ++++ packages/geom-hull/package.json | 6 +-- packages/geom-io-obj/CHANGELOG.md | 8 ++++ packages/geom-io-obj/package.json | 6 +-- packages/geom-isec/CHANGELOG.md | 8 ++++ packages/geom-isec/package.json | 12 +++--- packages/geom-isoline/CHANGELOG.md | 8 ++++ packages/geom-isoline/package.json | 8 ++-- packages/geom-poly-utils/CHANGELOG.md | 8 ++++ packages/geom-poly-utils/package.json | 10 ++--- packages/geom-resample/CHANGELOG.md | 8 ++++ packages/geom-resample/package.json | 10 ++--- packages/geom-splines/CHANGELOG.md | 8 ++++ packages/geom-splines/package.json | 14 +++---- packages/geom-subdiv-curve/CHANGELOG.md | 8 ++++ packages/geom-subdiv-curve/package.json | 8 ++-- packages/geom-tessellate/CHANGELOG.md | 8 ++++ packages/geom-tessellate/package.json | 12 +++--- packages/geom-voronoi/CHANGELOG.md | 8 ++++ packages/geom-voronoi/package.json | 16 ++++---- packages/geom/CHANGELOG.md | 8 ++++ packages/geom/package.json | 48 +++++++++++------------ packages/gp/CHANGELOG.md | 8 ++++ packages/gp/package.json | 12 +++--- packages/grid-iterators/CHANGELOG.md | 8 ++++ packages/grid-iterators/package.json | 12 +++--- packages/hdiff/CHANGELOG.md | 8 ++++ packages/hdiff/package.json | 12 +++--- packages/hdom-canvas/CHANGELOG.md | 8 ++++ packages/hdom-canvas/package.json | 10 ++--- packages/hdom-components/CHANGELOG.md | 8 ++++ packages/hdom-components/package.json | 10 ++--- packages/hdom-mock/CHANGELOG.md | 8 ++++ packages/hdom-mock/package.json | 6 +-- packages/hdom/CHANGELOG.md | 8 ++++ packages/hdom/package.json | 10 ++--- packages/heaps/CHANGELOG.md | 8 ++++ packages/heaps/package.json | 6 +-- packages/hiccup-canvas/CHANGELOG.md | 8 ++++ packages/hiccup-canvas/package.json | 10 ++--- packages/hiccup-carbon-icons/CHANGELOG.md | 8 ++++ packages/hiccup-carbon-icons/package.json | 4 +- packages/hiccup-css/CHANGELOG.md | 8 ++++ packages/hiccup-css/package.json | 6 +-- packages/hiccup-html/CHANGELOG.md | 8 ++++ packages/hiccup-html/package.json | 4 +- packages/hiccup-markdown/CHANGELOG.md | 8 ++++ packages/hiccup-markdown/package.json | 18 ++++----- packages/hiccup-svg/CHANGELOG.md | 8 ++++ packages/hiccup-svg/package.json | 4 +- packages/hiccup/CHANGELOG.md | 8 ++++ packages/hiccup/package.json | 6 +-- packages/idgen/CHANGELOG.md | 8 ++++ packages/idgen/package.json | 4 +- packages/iges/CHANGELOG.md | 8 ++++ packages/iges/package.json | 12 +++--- packages/imgui/CHANGELOG.md | 8 ++++ packages/imgui/package.json | 18 ++++----- packages/interceptors/CHANGELOG.md | 8 ++++ packages/interceptors/package.json | 8 ++-- packages/intervals/CHANGELOG.md | 8 ++++ packages/intervals/package.json | 6 +-- packages/iterators/CHANGELOG.md | 8 ++++ packages/iterators/package.json | 6 +-- packages/leb128/CHANGELOG.md | 8 ++++ packages/leb128/package.json | 4 +- packages/lsys/CHANGELOG.md | 8 ++++ packages/lsys/package.json | 14 +++---- packages/malloc/CHANGELOG.md | 8 ++++ packages/malloc/package.json | 6 +-- packages/math/CHANGELOG.md | 8 ++++ packages/math/package.json | 4 +- packages/matrices/CHANGELOG.md | 8 ++++ packages/matrices/package.json | 8 ++-- packages/memoize/CHANGELOG.md | 8 ++++ packages/memoize/package.json | 4 +- packages/mime/CHANGELOG.md | 8 ++++ packages/mime/package.json | 4 +- packages/morton/CHANGELOG.md | 8 ++++ packages/morton/package.json | 8 ++-- packages/oquery/CHANGELOG.md | 12 ++++++ packages/oquery/package.json | 8 ++-- packages/parse/CHANGELOG.md | 8 ++++ packages/parse/package.json | 8 ++-- packages/paths/CHANGELOG.md | 8 ++++ packages/paths/package.json | 4 +- packages/pixel/CHANGELOG.md | 8 ++++ packages/pixel/package.json | 8 ++-- packages/pointfree-lang/CHANGELOG.md | 8 ++++ packages/pointfree-lang/package.json | 8 ++-- packages/pointfree/CHANGELOG.md | 8 ++++ packages/pointfree/package.json | 6 +-- packages/poisson/CHANGELOG.md | 8 ++++ packages/poisson/package.json | 12 +++--- packages/porter-duff/CHANGELOG.md | 8 ++++ packages/porter-duff/package.json | 6 +-- packages/ramp/CHANGELOG.md | 8 ++++ packages/ramp/package.json | 12 +++--- packages/random/CHANGELOG.md | 8 ++++ packages/random/package.json | 4 +- packages/range-coder/CHANGELOG.md | 8 ++++ packages/range-coder/package.json | 4 +- packages/rdom-canvas/CHANGELOG.md | 8 ++++ packages/rdom-canvas/package.json | 12 +++--- packages/rdom-components/CHANGELOG.md | 8 ++++ packages/rdom-components/package.json | 16 ++++---- packages/rdom/CHANGELOG.md | 11 ++++++ packages/rdom/package.json | 12 +++--- packages/resolve-map/CHANGELOG.md | 8 ++++ packages/resolve-map/package.json | 6 +-- packages/router/CHANGELOG.md | 8 ++++ packages/router/package.json | 4 +- packages/rstream-csp/CHANGELOG.md | 8 ++++ packages/rstream-csp/package.json | 6 +-- packages/rstream-dot/CHANGELOG.md | 8 ++++ packages/rstream-dot/package.json | 4 +- packages/rstream-gestures/CHANGELOG.md | 8 ++++ packages/rstream-gestures/package.json | 10 ++--- packages/rstream-graph/CHANGELOG.md | 8 ++++ packages/rstream-graph/package.json | 14 +++---- packages/rstream-log-file/CHANGELOG.md | 8 ++++ packages/rstream-log-file/package.json | 4 +- packages/rstream-log/CHANGELOG.md | 8 ++++ packages/rstream-log/package.json | 8 ++-- packages/rstream-query/CHANGELOG.md | 8 ++++ packages/rstream-query/package.json | 14 +++---- packages/rstream/CHANGELOG.md | 8 ++++ packages/rstream/package.json | 12 +++--- packages/sax/CHANGELOG.md | 8 ++++ packages/sax/package.json | 8 ++-- packages/scenegraph/CHANGELOG.md | 8 ++++ packages/scenegraph/package.json | 8 ++-- packages/seq/CHANGELOG.md | 8 ++++ packages/seq/package.json | 4 +- packages/sexpr/CHANGELOG.md | 8 ++++ packages/sexpr/package.json | 6 +-- packages/shader-ast-glsl/CHANGELOG.md | 8 ++++ packages/shader-ast-glsl/package.json | 6 +-- packages/shader-ast-js/CHANGELOG.md | 8 ++++ packages/shader-ast-js/package.json | 14 +++---- packages/shader-ast-stdlib/CHANGELOG.md | 8 ++++ packages/shader-ast-stdlib/package.json | 6 +-- packages/shader-ast/CHANGELOG.md | 8 ++++ packages/shader-ast/package.json | 8 ++-- packages/simd/CHANGELOG.md | 8 ++++ packages/simd/package.json | 4 +- packages/soa/CHANGELOG.md | 8 ++++ packages/soa/package.json | 10 ++--- packages/sparse/CHANGELOG.md | 8 ++++ packages/sparse/package.json | 6 +-- packages/strings/CHANGELOG.md | 8 ++++ packages/strings/package.json | 6 +-- packages/system/CHANGELOG.md | 8 ++++ packages/system/package.json | 6 +-- packages/text-canvas/CHANGELOG.md | 8 ++++ packages/text-canvas/package.json | 16 ++++---- packages/transducers-binary/CHANGELOG.md | 8 ++++ packages/transducers-binary/package.json | 10 ++--- packages/transducers-fsm/CHANGELOG.md | 8 ++++ packages/transducers-fsm/package.json | 6 +-- packages/transducers-hdom/CHANGELOG.md | 8 ++++ packages/transducers-hdom/package.json | 8 ++-- packages/transducers-patch/CHANGELOG.md | 8 ++++ packages/transducers-patch/package.json | 8 ++-- packages/transducers-stats/CHANGELOG.md | 8 ++++ packages/transducers-stats/package.json | 6 +-- packages/transducers/CHANGELOG.md | 8 ++++ packages/transducers/package.json | 14 +++---- packages/vclock/CHANGELOG.md | 8 ++++ packages/vclock/package.json | 4 +- packages/vector-pools/CHANGELOG.md | 8 ++++ packages/vector-pools/package.json | 12 +++--- packages/vectors/CHANGELOG.md | 8 ++++ packages/vectors/package.json | 14 +++---- packages/viz/CHANGELOG.md | 8 ++++ packages/viz/package.json | 16 ++++---- packages/webgl-msdf/CHANGELOG.md | 8 ++++ packages/webgl-msdf/package.json | 14 +++---- packages/webgl-shadertoy/CHANGELOG.md | 8 ++++ packages/webgl-shadertoy/package.json | 10 ++--- packages/webgl/CHANGELOG.md | 8 ++++ packages/webgl/package.json | 24 ++++++------ packages/zipper/CHANGELOG.md | 8 ++++ packages/zipper/package.json | 6 +-- 262 files changed, 1647 insertions(+), 592 deletions(-) diff --git a/packages/adjacency/CHANGELOG.md b/packages/adjacency/CHANGELOG.md index ab20fa8f59..62f905139e 100644 --- a/packages/adjacency/CHANGELOG.md +++ b/packages/adjacency/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.67](https://github.com/thi-ng/umbrella/compare/@thi.ng/adjacency@0.1.66...@thi.ng/adjacency@0.1.67) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/adjacency + + + + + ## [0.1.66](https://github.com/thi-ng/umbrella/compare/@thi.ng/adjacency@0.1.65...@thi.ng/adjacency@0.1.66) (2020-11-26) **Note:** Version bump only for package @thi.ng/adjacency diff --git a/packages/adjacency/package.json b/packages/adjacency/package.json index e25bb15f3a..61049d4f30 100644 --- a/packages/adjacency/package.json +++ b/packages/adjacency/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/adjacency", - "version": "0.1.66", + "version": "0.1.67", "description": "Sparse & bitwise adjacency matrices and related functions for directed & undirected graphs", "module": "./index.js", "main": "./lib/index.js", @@ -40,7 +40,7 @@ "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", "@microsoft/api-extractor": "^7.12.0", - "@thi.ng/vectors": "^4.8.1", + "@thi.ng/vectors": "^4.8.2", "@types/mocha": "^8.0.3", "@types/node": "^14.6.1", "mocha": "^8.2.1", @@ -50,12 +50,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", - "@thi.ng/bitfield": "^0.3.24", + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", + "@thi.ng/bitfield": "^0.3.25", "@thi.ng/checks": "^2.7.11", - "@thi.ng/dcons": "^2.3.2", - "@thi.ng/sparse": "^0.1.57" + "@thi.ng/dcons": "^2.3.3", + "@thi.ng/sparse": "^0.1.58" }, "files": [ "*.js", diff --git a/packages/api/CHANGELOG.md b/packages/api/CHANGELOG.md index 97b87201fd..109604e376 100644 --- a/packages/api/CHANGELOG.md +++ b/packages/api/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.13.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/api@6.13.3...@thi.ng/api@6.13.4) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/api + + + + + ## [6.13.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/api@6.13.2...@thi.ng/api@6.13.3) (2020-11-26) **Note:** Version bump only for package @thi.ng/api diff --git a/packages/api/package.json b/packages/api/package.json index 6a89198c92..0f74b95a04 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/api", - "version": "6.13.3", + "version": "6.13.4", "description": "Common, generic types, interfaces & mixins", "module": "./index.js", "main": "./lib/index.js", diff --git a/packages/arrays/CHANGELOG.md b/packages/arrays/CHANGELOG.md index 8a367ed0aa..66a3be8452 100644 --- a/packages/arrays/CHANGELOG.md +++ b/packages/arrays/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.8.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/arrays@0.8.3...@thi.ng/arrays@0.8.4) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/arrays + + + + + ## [0.8.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/arrays@0.8.2...@thi.ng/arrays@0.8.3) (2020-11-26) **Note:** Version bump only for package @thi.ng/arrays diff --git a/packages/arrays/package.json b/packages/arrays/package.json index 334dbc9a82..baaf6d69b0 100644 --- a/packages/arrays/package.json +++ b/packages/arrays/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/arrays", - "version": "0.8.3", + "version": "0.8.4", "description": "Array / Arraylike utilities", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/compare": "^1.3.19", + "@thi.ng/compare": "^1.3.20", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/random": "^2.1.1" + "@thi.ng/random": "^2.1.2" }, "files": [ "*.js", diff --git a/packages/associative/CHANGELOG.md b/packages/associative/CHANGELOG.md index 0c6b392cca..235a9c9e9a 100644 --- a/packages/associative/CHANGELOG.md +++ b/packages/associative/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.0.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@5.0.10...@thi.ng/associative@5.0.11) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/associative + + + + + ## [5.0.10](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@5.0.9...@thi.ng/associative@5.0.10) (2020-11-26) **Note:** Version bump only for package @thi.ng/associative diff --git a/packages/associative/package.json b/packages/associative/package.json index da2057da54..a72eb0801b 100644 --- a/packages/associative/package.json +++ b/packages/associative/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/associative", - "version": "5.0.10", + "version": "5.0.11", "description": "Alternative Map and Set implementations with customizable equality semantics & supporting operations", "module": "./index.js", "main": "./lib/index.js", @@ -49,14 +49,14 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", "@thi.ng/checks": "^2.7.11", - "@thi.ng/compare": "^1.3.19", - "@thi.ng/dcons": "^2.3.2", + "@thi.ng/compare": "^1.3.20", + "@thi.ng/dcons": "^2.3.3", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/transducers": "^7.5.1", + "@thi.ng/transducers": "^7.5.2", "tslib": "2.0.1" }, "files": [ diff --git a/packages/atom/CHANGELOG.md b/packages/atom/CHANGELOG.md index 2a04894659..7333bf0008 100644 --- a/packages/atom/CHANGELOG.md +++ b/packages/atom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.1.24](https://github.com/thi-ng/umbrella/compare/@thi.ng/atom@4.1.23...@thi.ng/atom@4.1.24) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/atom + + + + + ## [4.1.23](https://github.com/thi-ng/umbrella/compare/@thi.ng/atom@4.1.22...@thi.ng/atom@4.1.23) (2020-11-26) **Note:** Version bump only for package @thi.ng/atom diff --git a/packages/atom/package.json b/packages/atom/package.json index 7370166f17..29f5dd0b84 100644 --- a/packages/atom/package.json +++ b/packages/atom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/atom", - "version": "4.1.23", + "version": "4.1.24", "description": "Mutable wrappers for nested immutable values with optional undo/redo history and transaction support", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/paths": "^4.1.9", + "@thi.ng/paths": "^4.1.10", "tslib": "2.0.1" }, "files": [ diff --git a/packages/bench/CHANGELOG.md b/packages/bench/CHANGELOG.md index 2bee436432..515f838231 100644 --- a/packages/bench/CHANGELOG.md +++ b/packages/bench/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.24](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@2.0.23...@thi.ng/bench@2.0.24) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/bench + + + + + ## [2.0.23](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@2.0.22...@thi.ng/bench@2.0.23) (2020-11-26) **Note:** Version bump only for package @thi.ng/bench diff --git a/packages/bench/package.json b/packages/bench/package.json index e677d20d7c..bfbfc56b8d 100644 --- a/packages/bench/package.json +++ b/packages/bench/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/bench", - "version": "2.0.23", + "version": "2.0.24", "description": "Benchmarking utilities w/ optional statistics", "module": "./index.js", "main": "./lib/index.js", diff --git a/packages/bencode/CHANGELOG.md b/packages/bencode/CHANGELOG.md index f077f1dabd..e955cb00c0 100644 --- a/packages/bencode/CHANGELOG.md +++ b/packages/bencode/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.3.43](https://github.com/thi-ng/umbrella/compare/@thi.ng/bencode@0.3.42...@thi.ng/bencode@0.3.43) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/bencode + + + + + ## [0.3.42](https://github.com/thi-ng/umbrella/compare/@thi.ng/bencode@0.3.41...@thi.ng/bencode@0.3.42) (2020-11-26) **Note:** Version bump only for package @thi.ng/bencode diff --git a/packages/bencode/package.json b/packages/bencode/package.json index 0f6d6ea6a6..64323cd652 100644 --- a/packages/bencode/package.json +++ b/packages/bencode/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/bencode", - "version": "0.3.42", + "version": "0.3.43", "description": "Bencode binary encoder / decoder with optional UTF8 encoding & floating point support", "module": "./index.js", "main": "./lib/index.js", @@ -49,13 +49,13 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/defmulti": "^1.3.1", + "@thi.ng/defmulti": "^1.3.2", "@thi.ng/errors": "^1.2.24", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/transducers-binary": "^0.5.32" + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/transducers-binary": "^0.5.33" }, "files": [ "*.js", diff --git a/packages/binary/CHANGELOG.md b/packages/binary/CHANGELOG.md index bef5d625a5..d969332d17 100644 --- a/packages/binary/CHANGELOG.md +++ b/packages/binary/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.19](https://github.com/thi-ng/umbrella/compare/@thi.ng/binary@2.0.18...@thi.ng/binary@2.0.19) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/binary + + + + + ## [2.0.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/binary@2.0.17...@thi.ng/binary@2.0.18) (2020-11-26) **Note:** Version bump only for package @thi.ng/binary diff --git a/packages/binary/package.json b/packages/binary/package.json index 30ae5921da..8dc76bc618 100644 --- a/packages/binary/package.json +++ b/packages/binary/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/binary", - "version": "2.0.18", + "version": "2.0.19", "description": "95+ assorted binary / bitwise operations, conversions, utilities", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/bitfield/CHANGELOG.md b/packages/bitfield/CHANGELOG.md index 2803682f92..8ff891f58e 100644 --- a/packages/bitfield/CHANGELOG.md +++ b/packages/bitfield/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.3.25](https://github.com/thi-ng/umbrella/compare/@thi.ng/bitfield@0.3.24...@thi.ng/bitfield@0.3.25) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/bitfield + + + + + ## [0.3.24](https://github.com/thi-ng/umbrella/compare/@thi.ng/bitfield@0.3.23...@thi.ng/bitfield@0.3.24) (2020-11-26) **Note:** Version bump only for package @thi.ng/bitfield diff --git a/packages/bitfield/package.json b/packages/bitfield/package.json index d419885ad1..3b383ece35 100644 --- a/packages/bitfield/package.json +++ b/packages/bitfield/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/bitfield", - "version": "0.3.24", + "version": "0.3.25", "description": "1D / 2D bit field implementations", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", - "@thi.ng/strings": "^1.11.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", + "@thi.ng/strings": "^1.11.2" }, "files": [ "*.js", diff --git a/packages/cache/CHANGELOG.md b/packages/cache/CHANGELOG.md index 04e6d37da4..6f1c5f2bff 100644 --- a/packages/cache/CHANGELOG.md +++ b/packages/cache/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.63](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@1.0.62...@thi.ng/cache@1.0.63) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/cache + + + + + ## [1.0.62](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@1.0.61...@thi.ng/cache@1.0.62) (2020-11-26) **Note:** Version bump only for package @thi.ng/cache diff --git a/packages/cache/package.json b/packages/cache/package.json index 209fc1528e..ba3470eb54 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/cache", - "version": "1.0.62", + "version": "1.0.63", "description": "In-memory cache implementations with ES6 Map-like API and different eviction strategies", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/dcons": "^2.3.2", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/dcons": "^2.3.3", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/color/CHANGELOG.md b/packages/color/CHANGELOG.md index eefc5298ba..8c5b849d02 100644 --- a/packages/color/CHANGELOG.md +++ b/packages/color/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/color@1.3.1...@thi.ng/color@1.3.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/color + + + + + ## [1.3.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/color@1.3.0...@thi.ng/color@1.3.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/color diff --git a/packages/color/package.json b/packages/color/package.json index e5505317b4..010e98d400 100644 --- a/packages/color/package.json +++ b/packages/color/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/color", - "version": "1.3.1", + "version": "1.3.2", "description": "Array-based color ops, conversions, multi-color gradients, presets", "module": "./index.js", "main": "./lib/index.js", @@ -49,15 +49,15 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/compose": "^1.4.20", - "@thi.ng/defmulti": "^1.3.1", + "@thi.ng/compose": "^1.4.21", + "@thi.ng/defmulti": "^1.3.2", "@thi.ng/errors": "^1.2.24", - "@thi.ng/math": "^2.2.1", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/colored-noise/CHANGELOG.md b/packages/colored-noise/CHANGELOG.md index f16263da04..6d011de0a9 100644 --- a/packages/colored-noise/CHANGELOG.md +++ b/packages/colored-noise/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/colored-noise@0.1.5...@thi.ng/colored-noise@0.1.6) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/colored-noise + + + + + ## [0.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/colored-noise@0.1.4...@thi.ng/colored-noise@0.1.5) (2020-11-26) **Note:** Version bump only for package @thi.ng/colored-noise diff --git a/packages/colored-noise/package.json b/packages/colored-noise/package.json index 3a11ae2134..4a165d5bcc 100644 --- a/packages/colored-noise/package.json +++ b/packages/colored-noise/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/colored-noise", - "version": "0.1.5", + "version": "0.1.6", "description": "Customizable O(1) ES6 generators for colored noise", "module": "./index.js", "main": "./lib/index.js", @@ -40,12 +40,12 @@ "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", "@microsoft/api-extractor": "^7.12.0", - "@thi.ng/api": "^6.13.3", - "@thi.ng/dsp": "^2.1.4", - "@thi.ng/dsp-io-wav": "^0.1.32", - "@thi.ng/text-canvas": "^0.2.34", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1", + "@thi.ng/api": "^6.13.4", + "@thi.ng/dsp": "^2.1.5", + "@thi.ng/dsp-io-wav": "^0.1.33", + "@thi.ng/text-canvas": "^0.2.35", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2", "@types/mocha": "^8.0.3", "@types/node": "^14.6.1", "mocha": "^8.2.1", @@ -55,8 +55,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/binary": "^2.0.18", - "@thi.ng/random": "^2.1.1" + "@thi.ng/binary": "^2.0.19", + "@thi.ng/random": "^2.1.2" }, "files": [ "*.js", diff --git a/packages/compare/CHANGELOG.md b/packages/compare/CHANGELOG.md index 09eee05997..66668c0739 100644 --- a/packages/compare/CHANGELOG.md +++ b/packages/compare/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.20](https://github.com/thi-ng/umbrella/compare/@thi.ng/compare@1.3.19...@thi.ng/compare@1.3.20) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/compare + + + + + ## [1.3.19](https://github.com/thi-ng/umbrella/compare/@thi.ng/compare@1.3.18...@thi.ng/compare@1.3.19) (2020-11-26) **Note:** Version bump only for package @thi.ng/compare diff --git a/packages/compare/package.json b/packages/compare/package.json index 30c27f8798..72d8c21e06 100644 --- a/packages/compare/package.json +++ b/packages/compare/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/compare", - "version": "1.3.19", + "version": "1.3.20", "description": "Comparators with support for types implementing the @thi.ng/api/ICompare interface", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/compose/CHANGELOG.md b/packages/compose/CHANGELOG.md index 7d080ebaba..00cf506b7d 100644 --- a/packages/compose/CHANGELOG.md +++ b/packages/compose/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.4.21](https://github.com/thi-ng/umbrella/compare/@thi.ng/compose@1.4.20...@thi.ng/compose@1.4.21) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/compose + + + + + ## [1.4.20](https://github.com/thi-ng/umbrella/compare/@thi.ng/compose@1.4.19...@thi.ng/compose@1.4.20) (2020-11-26) **Note:** Version bump only for package @thi.ng/compose diff --git a/packages/compose/package.json b/packages/compose/package.json index a0827c0c9b..6462989a6b 100644 --- a/packages/compose/package.json +++ b/packages/compose/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/compose", - "version": "1.4.20", + "version": "1.4.21", "description": "Optimized functional composition helpers", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/errors": "^1.2.24" }, "files": [ diff --git a/packages/csp/CHANGELOG.md b/packages/csp/CHANGELOG.md index c34dbd075d..17bbe72c20 100644 --- a/packages/csp/CHANGELOG.md +++ b/packages/csp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.43](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@1.1.42...@thi.ng/csp@1.1.43) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/csp + + + + + ## [1.1.42](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@1.1.41...@thi.ng/csp@1.1.42) (2020-11-26) **Note:** Version bump only for package @thi.ng/csp diff --git a/packages/csp/package.json b/packages/csp/package.json index fbfbe40567..680c108635 100644 --- a/packages/csp/package.json +++ b/packages/csp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/csp", - "version": "1.1.42", + "version": "1.1.43", "description": "ES6 promise based CSP primitives & operations", "module": "./index.js", "main": "./lib/index.js", @@ -53,12 +53,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/dcons": "^2.3.2", + "@thi.ng/dcons": "^2.3.3", "@thi.ng/errors": "^1.2.24", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/csv/CHANGELOG.md b/packages/csv/CHANGELOG.md index 9b56c8bed3..f80f6ee93e 100644 --- a/packages/csv/CHANGELOG.md +++ b/packages/csv/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/csv@0.1.1...@thi.ng/csv@0.1.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/csv + + + + + ## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/csv@0.1.0...@thi.ng/csv@0.1.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/csv diff --git a/packages/csv/package.json b/packages/csv/package.json index 4c136bd8e6..cd38b7d841 100644 --- a/packages/csv/package.json +++ b/packages/csv/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/csv", - "version": "0.1.1", + "version": "0.1.2", "description": "Customizable, transducer-based CSV parser/object mapper and transformer", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/date/CHANGELOG.md b/packages/date/CHANGELOG.md index f62edd106b..f638182c0b 100644 --- a/packages/date/CHANGELOG.md +++ b/packages/date/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/date@0.2.2...@thi.ng/date@0.2.3) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/date + + + + + ## [0.2.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/date@0.2.1...@thi.ng/date@0.2.2) (2020-11-26) **Note:** Version bump only for package @thi.ng/date diff --git a/packages/date/package.json b/packages/date/package.json index b6739f3b4e..a8af241cd4 100644 --- a/packages/date/package.json +++ b/packages/date/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/date", - "version": "0.2.2", + "version": "0.2.3", "description": "Date/timestamp iterators, formatters, rounding", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/dcons/CHANGELOG.md b/packages/dcons/CHANGELOG.md index bad44c4f8f..babdd3d457 100644 --- a/packages/dcons/CHANGELOG.md +++ b/packages/dcons/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.3.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@2.3.2...@thi.ng/dcons@2.3.3) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dcons + + + + + ## [2.3.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@2.3.1...@thi.ng/dcons@2.3.2) (2020-11-26) **Note:** Version bump only for package @thi.ng/dcons diff --git a/packages/dcons/package.json b/packages/dcons/package.json index 8ae2a92440..bab6d239a8 100644 --- a/packages/dcons/package.json +++ b/packages/dcons/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dcons", - "version": "2.3.2", + "version": "2.3.3", "description": "Double-linked lists with comprehensive set of operations (incl. optional self-organizing behaviors)", "module": "./index.js", "main": "./lib/index.js", @@ -49,13 +49,13 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/compare": "^1.3.19", + "@thi.ng/compare": "^1.3.20", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/random": "^2.1.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/random": "^2.1.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/defmulti/CHANGELOG.md b/packages/defmulti/CHANGELOG.md index d37eb0c678..78e56e67cb 100644 --- a/packages/defmulti/CHANGELOG.md +++ b/packages/defmulti/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/defmulti@1.3.1...@thi.ng/defmulti@1.3.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/defmulti + + + + + ## [1.3.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/defmulti@1.3.0...@thi.ng/defmulti@1.3.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/defmulti diff --git a/packages/defmulti/package.json b/packages/defmulti/package.json index fd90bd4d19..18a654e87d 100644 --- a/packages/defmulti/package.json +++ b/packages/defmulti/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/defmulti", - "version": "1.3.1", + "version": "1.3.2", "description": "Dynamic, extensible multiple dispatch via user supplied dispatch function.", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/errors": "^1.2.24" }, "files": [ diff --git a/packages/dgraph-dot/CHANGELOG.md b/packages/dgraph-dot/CHANGELOG.md index 7935c077d3..469c49ccf4 100644 --- a/packages/dgraph-dot/CHANGELOG.md +++ b/packages/dgraph-dot/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.31](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph-dot@0.1.30...@thi.ng/dgraph-dot@0.1.31) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dgraph-dot + + + + + ## [0.1.30](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph-dot@0.1.29...@thi.ng/dgraph-dot@0.1.30) (2020-11-26) **Note:** Version bump only for package @thi.ng/dgraph-dot diff --git a/packages/dgraph-dot/package.json b/packages/dgraph-dot/package.json index 97cd40f862..7ec0deb164 100644 --- a/packages/dgraph-dot/package.json +++ b/packages/dgraph-dot/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dgraph-dot", - "version": "0.1.30", + "version": "0.1.31", "description": "Customizable Graphviz DOT serialization for @thi.ng/dgraph", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/dgraph": "^1.3.1", - "@thi.ng/dot": "^1.2.20" + "@thi.ng/api": "^6.13.4", + "@thi.ng/dgraph": "^1.3.2", + "@thi.ng/dot": "^1.2.21" }, "files": [ "*.js", diff --git a/packages/dgraph/CHANGELOG.md b/packages/dgraph/CHANGELOG.md index a43a371daa..d2292c834b 100644 --- a/packages/dgraph/CHANGELOG.md +++ b/packages/dgraph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@1.3.1...@thi.ng/dgraph@1.3.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dgraph + + + + + ## [1.3.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@1.3.0...@thi.ng/dgraph@1.3.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/dgraph diff --git a/packages/dgraph/package.json b/packages/dgraph/package.json index 2b6a35fd7a..c4186a9bf5 100644 --- a/packages/dgraph/package.json +++ b/packages/dgraph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dgraph", - "version": "1.3.1", + "version": "1.3.2", "description": "Type-agnostic directed acyclic graph (DAG) & graph operations", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/associative": "^5.0.10", + "@thi.ng/api": "^6.13.4", + "@thi.ng/associative": "^5.0.11", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/diff/CHANGELOG.md b/packages/diff/CHANGELOG.md index e02df4f2c4..d2e923db1c 100644 --- a/packages/diff/CHANGELOG.md +++ b/packages/diff/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.2.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/diff@3.2.34...@thi.ng/diff@3.2.35) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/diff + + + + + ## [3.2.34](https://github.com/thi-ng/umbrella/compare/@thi.ng/diff@3.2.33...@thi.ng/diff@3.2.34) (2020-11-26) **Note:** Version bump only for package @thi.ng/diff diff --git a/packages/diff/package.json b/packages/diff/package.json index c25a86dda2..5f58e7db15 100644 --- a/packages/diff/package.json +++ b/packages/diff/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/diff", - "version": "3.2.34", + "version": "3.2.35", "description": "Customizable diff implementations for arrays (sequential) & objects (associative), with or without linear edit logs", "module": "./index.js", "main": "./lib/index.js", @@ -48,7 +48,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/equiv": "^1.0.33" }, "files": [ diff --git a/packages/dl-asset/CHANGELOG.md b/packages/dl-asset/CHANGELOG.md index a6e35d81a0..79a17f1ef7 100644 --- a/packages/dl-asset/CHANGELOG.md +++ b/packages/dl-asset/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.4.9](https://github.com/thi-ng/umbrella/compare/@thi.ng/dl-asset@0.4.8...@thi.ng/dl-asset@0.4.9) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dl-asset + + + + + ## [0.4.8](https://github.com/thi-ng/umbrella/compare/@thi.ng/dl-asset@0.4.7...@thi.ng/dl-asset@0.4.8) (2020-11-26) **Note:** Version bump only for package @thi.ng/dl-asset diff --git a/packages/dl-asset/package.json b/packages/dl-asset/package.json index 3cec5b1024..9da920abcf 100644 --- a/packages/dl-asset/package.json +++ b/packages/dl-asset/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dl-asset", - "version": "0.4.8", + "version": "0.4.9", "description": "Local asset download for web apps, with automatic MIME type detection", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/mime": "^0.1.24" + "@thi.ng/mime": "^0.1.25" }, "files": [ "*.js", diff --git a/packages/dlogic/CHANGELOG.md b/packages/dlogic/CHANGELOG.md index 42f10c9a81..6254ac3e2a 100644 --- a/packages/dlogic/CHANGELOG.md +++ b/packages/dlogic/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/dlogic@1.0.34...@thi.ng/dlogic@1.0.35) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dlogic + + + + + ## [1.0.34](https://github.com/thi-ng/umbrella/compare/@thi.ng/dlogic@1.0.33...@thi.ng/dlogic@1.0.34) (2020-11-26) **Note:** Version bump only for package @thi.ng/dlogic diff --git a/packages/dlogic/package.json b/packages/dlogic/package.json index 8844505e36..0e0de7ffb8 100644 --- a/packages/dlogic/package.json +++ b/packages/dlogic/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dlogic", - "version": "1.0.34", + "version": "1.0.35", "description": "Assorted digital logic ops / constructs", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/dot/CHANGELOG.md b/packages/dot/CHANGELOG.md index b00184a015..55e5bad341 100644 --- a/packages/dot/CHANGELOG.md +++ b/packages/dot/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.21](https://github.com/thi-ng/umbrella/compare/@thi.ng/dot@1.2.20...@thi.ng/dot@1.2.21) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dot + + + + + ## [1.2.20](https://github.com/thi-ng/umbrella/compare/@thi.ng/dot@1.2.19...@thi.ng/dot@1.2.20) (2020-11-26) **Note:** Version bump only for package @thi.ng/dot diff --git a/packages/dot/package.json b/packages/dot/package.json index c4d9fa0f1c..f8a159361f 100644 --- a/packages/dot/package.json +++ b/packages/dot/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dot", - "version": "1.2.20", + "version": "1.2.21", "description": "Graphviz document abstraction & serialization to DOT format", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11" }, "files": [ diff --git a/packages/dsp-io-wav/CHANGELOG.md b/packages/dsp-io-wav/CHANGELOG.md index 43d8d6b4b7..8c0d2f2218 100644 --- a/packages/dsp-io-wav/CHANGELOG.md +++ b/packages/dsp-io-wav/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.33](https://github.com/thi-ng/umbrella/compare/@thi.ng/dsp-io-wav@0.1.32...@thi.ng/dsp-io-wav@0.1.33) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dsp-io-wav + + + + + ## [0.1.32](https://github.com/thi-ng/umbrella/compare/@thi.ng/dsp-io-wav@0.1.31...@thi.ng/dsp-io-wav@0.1.32) (2020-11-26) **Note:** Version bump only for package @thi.ng/dsp-io-wav diff --git a/packages/dsp-io-wav/package.json b/packages/dsp-io-wav/package.json index afe48bdd76..529dc27e88 100644 --- a/packages/dsp-io-wav/package.json +++ b/packages/dsp-io-wav/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dsp-io-wav", - "version": "0.1.32", + "version": "0.1.33", "description": "WAV file format generation", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/transducers-binary": "^0.5.32" + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/transducers-binary": "^0.5.33" }, "files": [ "*.js", diff --git a/packages/dsp/CHANGELOG.md b/packages/dsp/CHANGELOG.md index 36c0fdcc21..e317db3872 100644 --- a/packages/dsp/CHANGELOG.md +++ b/packages/dsp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/dsp@2.1.4...@thi.ng/dsp@2.1.5) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dsp + + + + + ## [2.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/dsp@2.1.3...@thi.ng/dsp@2.1.4) (2020-11-26) **Note:** Version bump only for package @thi.ng/dsp diff --git a/packages/dsp/package.json b/packages/dsp/package.json index cd32b966e9..1334fa68d0 100644 --- a/packages/dsp/package.json +++ b/packages/dsp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dsp", - "version": "2.1.4", + "version": "2.1.5", "description": "Composable signal generators, oscillators, filters, FFT, spectrum, windowing & related DSP utils", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/math": "^2.2.1", - "@thi.ng/random": "^2.1.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/random": "^2.1.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/dual-algebra/CHANGELOG.md b/packages/dual-algebra/CHANGELOG.md index 421d7674c1..c481d8f33a 100644 --- a/packages/dual-algebra/CHANGELOG.md +++ b/packages/dual-algebra/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/dual-algebra@0.1.3...@thi.ng/dual-algebra@0.1.4) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dual-algebra + + + + + ## [0.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/dual-algebra@0.1.2...@thi.ng/dual-algebra@0.1.3) (2020-11-26) **Note:** Version bump only for package @thi.ng/dual-algebra diff --git a/packages/dual-algebra/package.json b/packages/dual-algebra/package.json index 8dff4ad6cb..4a8e2edca7 100644 --- a/packages/dual-algebra/package.json +++ b/packages/dual-algebra/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dual-algebra", - "version": "0.1.3", + "version": "0.1.4", "description": "Multivariate dual number algebra, automatic differentiation", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/dynvar/CHANGELOG.md b/packages/dynvar/CHANGELOG.md index 957f171c1d..f0984ddf75 100644 --- a/packages/dynvar/CHANGELOG.md +++ b/packages/dynvar/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.27](https://github.com/thi-ng/umbrella/compare/@thi.ng/dynvar@0.1.26...@thi.ng/dynvar@0.1.27) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/dynvar + + + + + ## [0.1.26](https://github.com/thi-ng/umbrella/compare/@thi.ng/dynvar@0.1.25...@thi.ng/dynvar@0.1.26) (2020-11-26) **Note:** Version bump only for package @thi.ng/dynvar diff --git a/packages/dynvar/package.json b/packages/dynvar/package.json index eba6b787b7..92427b18a8 100644 --- a/packages/dynvar/package.json +++ b/packages/dynvar/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dynvar", - "version": "0.1.26", + "version": "0.1.27", "description": "Dynamically scoped variable bindings", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/ecs/CHANGELOG.md b/packages/ecs/CHANGELOG.md index c83ecdb1da..3f8e928a12 100644 --- a/packages/ecs/CHANGELOG.md +++ b/packages/ecs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.4.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/ecs@0.4.2...@thi.ng/ecs@0.4.3) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/ecs + + + + + ## [0.4.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/ecs@0.4.1...@thi.ng/ecs@0.4.2) (2020-11-26) **Note:** Version bump only for package @thi.ng/ecs diff --git a/packages/ecs/package.json b/packages/ecs/package.json index 0114f0470a..01874f15d4 100644 --- a/packages/ecs/package.json +++ b/packages/ecs/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/ecs", - "version": "0.4.2", + "version": "0.4.3", "description": "Entity Component System based around typed arrays & sparse sets", "module": "./index.js", "main": "./lib/index.js", @@ -50,14 +50,14 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/associative": "^5.0.10", - "@thi.ng/binary": "^2.0.18", + "@thi.ng/api": "^6.13.4", + "@thi.ng/associative": "^5.0.11", + "@thi.ng/binary": "^2.0.19", "@thi.ng/checks": "^2.7.11", - "@thi.ng/dcons": "^2.3.2", - "@thi.ng/idgen": "^0.2.26", - "@thi.ng/malloc": "^4.2.2", - "@thi.ng/transducers": "^7.5.1", + "@thi.ng/dcons": "^2.3.3", + "@thi.ng/idgen": "^0.2.27", + "@thi.ng/malloc": "^4.2.3", + "@thi.ng/transducers": "^7.5.2", "tslib": "2.0.1" }, "files": [ diff --git a/packages/egf/CHANGELOG.md b/packages/egf/CHANGELOG.md index 65ad408419..5f50c11930 100644 --- a/packages/egf/CHANGELOG.md +++ b/packages/egf/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.3.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/egf@0.3.3...@thi.ng/egf@0.3.4) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/egf + + + + + ## [0.3.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/egf@0.3.2...@thi.ng/egf@0.3.3) (2020-11-26) **Note:** Version bump only for package @thi.ng/egf diff --git a/packages/egf/package.json b/packages/egf/package.json index 3939c835ba..c681dd829d 100644 --- a/packages/egf/package.json +++ b/packages/egf/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/egf", - "version": "0.3.3", + "version": "0.3.4", "description": "Extensible Graph Format", "module": "./index.js", "main": "./lib/index.js", @@ -45,14 +45,14 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/associative": "^5.0.10", + "@thi.ng/api": "^6.13.4", + "@thi.ng/associative": "^5.0.11", "@thi.ng/checks": "^2.7.11", - "@thi.ng/dot": "^1.2.20", + "@thi.ng/dot": "^1.2.21", "@thi.ng/errors": "^1.2.24", "@thi.ng/prefixes": "^0.1.8", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers-binary": "^0.5.32" + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers-binary": "^0.5.33" }, "files": [ "*.js", diff --git a/packages/fsm/CHANGELOG.md b/packages/fsm/CHANGELOG.md index 4235e36e05..c6a4954bf3 100644 --- a/packages/fsm/CHANGELOG.md +++ b/packages/fsm/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.4.29](https://github.com/thi-ng/umbrella/compare/@thi.ng/fsm@2.4.28...@thi.ng/fsm@2.4.29) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/fsm + + + + + ## [2.4.28](https://github.com/thi-ng/umbrella/compare/@thi.ng/fsm@2.4.27...@thi.ng/fsm@2.4.28) (2020-11-26) **Note:** Version bump only for package @thi.ng/fsm diff --git a/packages/fsm/package.json b/packages/fsm/package.json index 7a5218dd8f..1b3a223443 100644 --- a/packages/fsm/package.json +++ b/packages/fsm/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/fsm", - "version": "2.4.28", + "version": "2.4.29", "description": "Composable primitives for building declarative, transducer based Finite-State Machines & matchers for arbitrary data streams", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/geom-accel/CHANGELOG.md b/packages/geom-accel/CHANGELOG.md index 426275122c..f695f3552b 100644 --- a/packages/geom-accel/CHANGELOG.md +++ b/packages/geom-accel/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.28](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-accel@2.1.27...@thi.ng/geom-accel@2.1.28) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-accel + + + + + ## [2.1.27](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-accel@2.1.26...@thi.ng/geom-accel@2.1.27) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-accel diff --git a/packages/geom-accel/package.json b/packages/geom-accel/package.json index 1f62bd3d42..1e030da668 100644 --- a/packages/geom-accel/package.json +++ b/packages/geom-accel/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-accel", - "version": "2.1.27", + "version": "2.1.28", "description": "n-D spatial indexing data structures with a shared ES6 Map/Set-like API", "module": "./index.js", "main": "./lib/index.js", @@ -50,16 +50,16 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/equiv": "^1.0.33", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-isec": "^0.7.1", - "@thi.ng/heaps": "^1.2.27", - "@thi.ng/math": "^2.2.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-isec": "^0.7.2", + "@thi.ng/heaps": "^1.2.28", + "@thi.ng/math": "^2.2.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-api/CHANGELOG.md b/packages/geom-api/CHANGELOG.md index 5c841bb8ec..5281aae017 100644 --- a/packages/geom-api/CHANGELOG.md +++ b/packages/geom-api/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-api@1.1.3...@thi.ng/geom-api@1.1.4) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-api + + + + + ## [1.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-api@1.1.2...@thi.ng/geom-api@1.1.3) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-api diff --git a/packages/geom-api/package.json b/packages/geom-api/package.json index 5fd90e1923..241086a502 100644 --- a/packages/geom-api/package.json +++ b/packages/geom-api/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-api", - "version": "1.1.3", + "version": "1.1.4", "description": "Shared type & interface declarations for @thi.ng/geom packages", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-arc/CHANGELOG.md b/packages/geom-arc/CHANGELOG.md index 36f92062d5..037e313419 100644 --- a/packages/geom-arc/CHANGELOG.md +++ b/packages/geom-arc/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.3.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-arc@0.3.16...@thi.ng/geom-arc@0.3.17) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-arc + + + + + ## [0.3.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-arc@0.3.15...@thi.ng/geom-arc@0.3.16) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-arc diff --git a/packages/geom-arc/package.json b/packages/geom-arc/package.json index 35618fc6cc..d38371f276 100644 --- a/packages/geom-arc/package.json +++ b/packages/geom-arc/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-arc", - "version": "0.3.16", + "version": "0.3.17", "description": "2D circular / elliptic arc operations", "module": "./index.js", "main": "./lib/index.js", @@ -50,10 +50,10 @@ }, "dependencies": { "@thi.ng/checks": "^2.7.11", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-resample": "^0.2.49", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-resample": "^0.2.50", + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-clip-line/CHANGELOG.md b/packages/geom-clip-line/CHANGELOG.md index 7d028c6067..271a6249ab 100644 --- a/packages/geom-clip-line/CHANGELOG.md +++ b/packages/geom-clip-line/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-clip-line@1.2.12...@thi.ng/geom-clip-line@1.2.13) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-clip-line + + + + + ## [1.2.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-clip-line@1.2.11...@thi.ng/geom-clip-line@1.2.12) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-clip-line diff --git a/packages/geom-clip-line/package.json b/packages/geom-clip-line/package.json index 85844e8106..14e1d006d4 100644 --- a/packages/geom-clip-line/package.json +++ b/packages/geom-clip-line/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-clip-line", - "version": "1.2.12", + "version": "1.2.13", "description": "2D line clipping (Liang-Barsky)", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/geom-isec": "^0.7.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/geom-isec": "^0.7.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-clip-poly/CHANGELOG.md b/packages/geom-clip-poly/CHANGELOG.md index 2ef56bd578..b485492f4a 100644 --- a/packages/geom-clip-poly/CHANGELOG.md +++ b/packages/geom-clip-poly/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.38](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-clip-poly@1.0.37...@thi.ng/geom-clip-poly@1.0.38) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-clip-poly + + + + + ## [1.0.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-clip-poly@1.0.36...@thi.ng/geom-clip-poly@1.0.37) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-clip-poly diff --git a/packages/geom-clip-poly/package.json b/packages/geom-clip-poly/package.json index bcfef121d5..ed002d3907 100644 --- a/packages/geom-clip-poly/package.json +++ b/packages/geom-clip-poly/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-clip-poly", - "version": "1.0.37", + "version": "1.0.38", "description": "2D convex polygon clipping (Sutherland-Hodgeman)", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/geom-isec": "^0.7.1", - "@thi.ng/geom-poly-utils": "^0.2.1", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-isec": "^0.7.2", + "@thi.ng/geom-poly-utils": "^0.2.2", + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-closest-point/CHANGELOG.md b/packages/geom-closest-point/CHANGELOG.md index 2d1d4d33f3..240c3bce44 100644 --- a/packages/geom-closest-point/CHANGELOG.md +++ b/packages/geom-closest-point/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.5.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-closest-point@0.5.3...@thi.ng/geom-closest-point@0.5.4) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-closest-point + + + + + ## [0.5.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-closest-point@0.5.2...@thi.ng/geom-closest-point@0.5.3) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-closest-point diff --git a/packages/geom-closest-point/package.json b/packages/geom-closest-point/package.json index 3408db41ee..f70ff7e857 100644 --- a/packages/geom-closest-point/package.json +++ b/packages/geom-closest-point/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-closest-point", - "version": "0.5.3", + "version": "0.5.4", "description": "2D / 3D closest point / proximity helpers", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-fuzz/CHANGELOG.md b/packages/geom-fuzz/CHANGELOG.md index 76dccbada1..8fd0e097ca 100644 --- a/packages/geom-fuzz/CHANGELOG.md +++ b/packages/geom-fuzz/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.24](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-fuzz@0.1.23...@thi.ng/geom-fuzz@0.1.24) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-fuzz + + + + + ## [0.1.23](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-fuzz@0.1.22...@thi.ng/geom-fuzz@0.1.23) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-fuzz diff --git a/packages/geom-fuzz/package.json b/packages/geom-fuzz/package.json index 3bcef54045..5f812abc0b 100644 --- a/packages/geom-fuzz/package.json +++ b/packages/geom-fuzz/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-fuzz", - "version": "0.1.23", + "version": "0.1.24", "description": "Highly configurable, fuzzy line & polygon creation with presets and composable fill & stroke styles. Canvas & SVG support", "module": "./index.js", "main": "./lib/index.js", @@ -48,16 +48,16 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/associative": "^5.0.10", - "@thi.ng/color": "^1.3.1", - "@thi.ng/geom": "^1.13.2", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-clip-line": "^1.2.12", - "@thi.ng/geom-resample": "^0.2.49", - "@thi.ng/grid-iterators": "^0.4.14", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/associative": "^5.0.11", + "@thi.ng/color": "^1.3.2", + "@thi.ng/geom": "^1.13.3", + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-clip-line": "^1.2.13", + "@thi.ng/geom-resample": "^0.2.50", + "@thi.ng/grid-iterators": "^0.4.15", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-hull/CHANGELOG.md b/packages/geom-hull/CHANGELOG.md index 3347798efa..953ba72390 100644 --- a/packages/geom-hull/CHANGELOG.md +++ b/packages/geom-hull/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.0.70](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-hull@0.0.69...@thi.ng/geom-hull@0.0.70) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-hull + + + + + ## [0.0.69](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-hull@0.0.68...@thi.ng/geom-hull@0.0.69) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-hull diff --git a/packages/geom-hull/package.json b/packages/geom-hull/package.json index 6ba51c93f0..d7936bcf88 100644 --- a/packages/geom-hull/package.json +++ b/packages/geom-hull/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-hull", - "version": "0.0.69", + "version": "0.0.70", "description": "Fast 2D convex hull (Graham Scan)", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-io-obj/CHANGELOG.md b/packages/geom-io-obj/CHANGELOG.md index aab8462652..4ecd5aef1f 100644 --- a/packages/geom-io-obj/CHANGELOG.md +++ b/packages/geom-io-obj/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.28](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-io-obj@0.1.27...@thi.ng/geom-io-obj@0.1.28) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-io-obj + + + + + ## [0.1.27](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-io-obj@0.1.26...@thi.ng/geom-io-obj@0.1.27) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-io-obj diff --git a/packages/geom-io-obj/package.json b/packages/geom-io-obj/package.json index 6b990fdcb4..aeb7693eb5 100644 --- a/packages/geom-io-obj/package.json +++ b/packages/geom-io-obj/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-io-obj", - "version": "0.1.27", + "version": "0.1.28", "description": "Wavefront OBJ parser (& exporter soon)", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-isec/CHANGELOG.md b/packages/geom-isec/CHANGELOG.md index d6e4181080..a9d62e6267 100644 --- a/packages/geom-isec/CHANGELOG.md +++ b/packages/geom-isec/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.7.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isec@0.7.1...@thi.ng/geom-isec@0.7.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-isec + + + + + ## [0.7.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isec@0.7.0...@thi.ng/geom-isec@0.7.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-isec diff --git a/packages/geom-isec/package.json b/packages/geom-isec/package.json index 8819676794..9c3c30410a 100644 --- a/packages/geom-isec/package.json +++ b/packages/geom-isec/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-isec", - "version": "0.7.1", + "version": "0.7.2", "description": "2D/3D shape intersection checks", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-closest-point": "^0.5.3", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-closest-point": "^0.5.4", + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-isoline/CHANGELOG.md b/packages/geom-isoline/CHANGELOG.md index 5c5b31504a..999deba80a 100644 --- a/packages/geom-isoline/CHANGELOG.md +++ b/packages/geom-isoline/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.68](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isoline@0.1.67...@thi.ng/geom-isoline@0.1.68) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-isoline + + + + + ## [0.1.67](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isoline@0.1.66...@thi.ng/geom-isoline@0.1.67) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-isoline diff --git a/packages/geom-isoline/package.json b/packages/geom-isoline/package.json index de5e1cc289..5a6191e50c 100644 --- a/packages/geom-isoline/package.json +++ b/packages/geom-isoline/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-isoline", - "version": "0.1.67", + "version": "0.1.68", "description": "Fast 2D contour line extraction / generation", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-poly-utils/CHANGELOG.md b/packages/geom-poly-utils/CHANGELOG.md index 382077f80b..110d3fabba 100644 --- a/packages/geom-poly-utils/CHANGELOG.md +++ b/packages/geom-poly-utils/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-poly-utils@0.2.1...@thi.ng/geom-poly-utils@0.2.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-poly-utils + + + + + ## [0.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-poly-utils@0.2.0...@thi.ng/geom-poly-utils@0.2.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-poly-utils diff --git a/packages/geom-poly-utils/package.json b/packages/geom-poly-utils/package.json index cd5ee02f2b..1da27d2775 100644 --- a/packages/geom-poly-utils/package.json +++ b/packages/geom-poly-utils/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-poly-utils", - "version": "0.2.1", + "version": "0.2.2", "description": "2D polygon / triangle analysis & processing utilities", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/errors": "^1.2.24", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-resample/CHANGELOG.md b/packages/geom-resample/CHANGELOG.md index c1d63377da..a9d576b2e3 100644 --- a/packages/geom-resample/CHANGELOG.md +++ b/packages/geom-resample/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.50](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-resample@0.2.49...@thi.ng/geom-resample@0.2.50) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-resample + + + + + ## [0.2.49](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-resample@0.2.48...@thi.ng/geom-resample@0.2.49) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-resample diff --git a/packages/geom-resample/package.json b/packages/geom-resample/package.json index 9ec4695237..8d9cbec1f3 100644 --- a/packages/geom-resample/package.json +++ b/packages/geom-resample/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-resample", - "version": "0.2.49", + "version": "0.2.50", "description": "Customizable nD polyline interpolation, re-sampling, splitting & nearest point computation", "module": "./index.js", "main": "./lib/index.js", @@ -50,10 +50,10 @@ }, "dependencies": { "@thi.ng/checks": "^2.7.11", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-closest-point": "^0.5.3", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-closest-point": "^0.5.4", + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-splines/CHANGELOG.md b/packages/geom-splines/CHANGELOG.md index 1ab65ab6e9..42fb017061 100644 --- a/packages/geom-splines/CHANGELOG.md +++ b/packages/geom-splines/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.5.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.5.36...@thi.ng/geom-splines@0.5.37) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-splines + + + + + ## [0.5.36](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.5.35...@thi.ng/geom-splines@0.5.36) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-splines diff --git a/packages/geom-splines/package.json b/packages/geom-splines/package.json index faab4b1236..932275da91 100644 --- a/packages/geom-splines/package.json +++ b/packages/geom-splines/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-splines", - "version": "0.5.36", + "version": "0.5.37", "description": "nD cubic & quadratic curve analysis, conversion, interpolation, splitting", "module": "./index.js", "main": "./lib/index.js", @@ -49,13 +49,13 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-arc": "^0.3.16", - "@thi.ng/geom-resample": "^0.2.49", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-arc": "^0.3.17", + "@thi.ng/geom-resample": "^0.2.50", + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-subdiv-curve/CHANGELOG.md b/packages/geom-subdiv-curve/CHANGELOG.md index 29d56fc508..4a1251a00d 100644 --- a/packages/geom-subdiv-curve/CHANGELOG.md +++ b/packages/geom-subdiv-curve/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.67](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-subdiv-curve@0.1.66...@thi.ng/geom-subdiv-curve@0.1.67) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-subdiv-curve + + + + + ## [0.1.66](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-subdiv-curve@0.1.65...@thi.ng/geom-subdiv-curve@0.1.66) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-subdiv-curve diff --git a/packages/geom-subdiv-curve/package.json b/packages/geom-subdiv-curve/package.json index 123773ac5b..dbbfd056e5 100644 --- a/packages/geom-subdiv-curve/package.json +++ b/packages/geom-subdiv-curve/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-subdiv-curve", - "version": "0.1.66", + "version": "0.1.67", "description": "Freely customizable, iterative nD subdivision curves for open / closed geometries", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-tessellate/CHANGELOG.md b/packages/geom-tessellate/CHANGELOG.md index d736b8ee37..314c597af6 100644 --- a/packages/geom-tessellate/CHANGELOG.md +++ b/packages/geom-tessellate/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-tessellate@0.2.50...@thi.ng/geom-tessellate@0.2.51) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-tessellate + + + + + ## [0.2.50](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-tessellate@0.2.49...@thi.ng/geom-tessellate@0.2.50) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-tessellate diff --git a/packages/geom-tessellate/package.json b/packages/geom-tessellate/package.json index 0f1c05645d..0de128436c 100644 --- a/packages/geom-tessellate/package.json +++ b/packages/geom-tessellate/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-tessellate", - "version": "0.2.50", + "version": "0.2.51", "description": "2D/3D convex polygon tessellators", "module": "./index.js", "main": "./lib/index.js", @@ -50,11 +50,11 @@ }, "dependencies": { "@thi.ng/checks": "^2.7.11", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-isec": "^0.7.1", - "@thi.ng/geom-poly-utils": "^0.2.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-isec": "^0.7.2", + "@thi.ng/geom-poly-utils": "^0.2.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom-voronoi/CHANGELOG.md b/packages/geom-voronoi/CHANGELOG.md index b02cc3c679..58fd8662ba 100644 --- a/packages/geom-voronoi/CHANGELOG.md +++ b/packages/geom-voronoi/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-voronoi@0.2.12...@thi.ng/geom-voronoi@0.2.13) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom-voronoi + + + + + ## [0.2.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-voronoi@0.2.11...@thi.ng/geom-voronoi@0.2.12) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom-voronoi diff --git a/packages/geom-voronoi/package.json b/packages/geom-voronoi/package.json index 25776d9275..0888119db0 100644 --- a/packages/geom-voronoi/package.json +++ b/packages/geom-voronoi/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom-voronoi", - "version": "0.2.12", + "version": "0.2.13", "description": "Fast, incremental 2D Delaunay & Voronoi mesh implementation", "module": "./index.js", "main": "./lib/index.js", @@ -49,15 +49,15 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/geom-clip-line": "^1.2.12", - "@thi.ng/geom-clip-poly": "^1.0.37", - "@thi.ng/geom-isec": "^0.7.1", - "@thi.ng/geom-poly-utils": "^0.2.1", - "@thi.ng/math": "^2.2.1", + "@thi.ng/geom-clip-line": "^1.2.13", + "@thi.ng/geom-clip-poly": "^1.0.38", + "@thi.ng/geom-isec": "^0.7.2", + "@thi.ng/geom-poly-utils": "^0.2.2", + "@thi.ng/math": "^2.2.2", "@thi.ng/quad-edge": "^0.2.26", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/geom/CHANGELOG.md b/packages/geom/CHANGELOG.md index 6b2ce9014c..7881558ead 100644 --- a/packages/geom/CHANGELOG.md +++ b/packages/geom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.13.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom@1.13.2...@thi.ng/geom@1.13.3) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/geom + + + + + ## [1.13.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom@1.13.1...@thi.ng/geom@1.13.2) (2020-11-26) **Note:** Version bump only for package @thi.ng/geom diff --git a/packages/geom/package.json b/packages/geom/package.json index d38be51d40..4b02f6d9ac 100644 --- a/packages/geom/package.json +++ b/packages/geom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/geom", - "version": "1.13.2", + "version": "1.13.3", "description": "Functional, polymorphic API for 2D geometry types & SVG generation", "module": "./index.js", "main": "./lib/index.js", @@ -49,32 +49,32 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/defmulti": "^1.3.1", + "@thi.ng/defmulti": "^1.3.2", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-arc": "^0.3.16", - "@thi.ng/geom-clip-line": "^1.2.12", - "@thi.ng/geom-clip-poly": "^1.0.37", - "@thi.ng/geom-closest-point": "^0.5.3", - "@thi.ng/geom-hull": "^0.0.69", - "@thi.ng/geom-isec": "^0.7.1", - "@thi.ng/geom-poly-utils": "^0.2.1", - "@thi.ng/geom-resample": "^0.2.49", - "@thi.ng/geom-splines": "^0.5.36", - "@thi.ng/geom-subdiv-curve": "^0.1.66", - "@thi.ng/geom-tessellate": "^0.2.50", - "@thi.ng/hiccup": "^3.6.3", - "@thi.ng/hiccup-svg": "^3.6.4", - "@thi.ng/math": "^2.2.1", - "@thi.ng/matrices": "^0.6.36", - "@thi.ng/random": "^2.1.1", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-arc": "^0.3.17", + "@thi.ng/geom-clip-line": "^1.2.13", + "@thi.ng/geom-clip-poly": "^1.0.38", + "@thi.ng/geom-closest-point": "^0.5.4", + "@thi.ng/geom-hull": "^0.0.70", + "@thi.ng/geom-isec": "^0.7.2", + "@thi.ng/geom-poly-utils": "^0.2.2", + "@thi.ng/geom-resample": "^0.2.50", + "@thi.ng/geom-splines": "^0.5.37", + "@thi.ng/geom-subdiv-curve": "^0.1.67", + "@thi.ng/geom-tessellate": "^0.2.51", + "@thi.ng/hiccup": "^3.6.4", + "@thi.ng/hiccup-svg": "^3.6.5", + "@thi.ng/math": "^2.2.2", + "@thi.ng/matrices": "^0.6.37", + "@thi.ng/random": "^2.1.2", + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/gp/CHANGELOG.md b/packages/gp/CHANGELOG.md index b957fec7ae..61e4918eff 100644 --- a/packages/gp/CHANGELOG.md +++ b/packages/gp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/gp@0.1.34...@thi.ng/gp@0.1.35) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/gp + + + + + ## [0.1.34](https://github.com/thi-ng/umbrella/compare/@thi.ng/gp@0.1.33...@thi.ng/gp@0.1.34) (2020-11-26) **Note:** Version bump only for package @thi.ng/gp diff --git a/packages/gp/package.json b/packages/gp/package.json index 7b2f962200..3aad7b3484 100644 --- a/packages/gp/package.json +++ b/packages/gp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/gp", - "version": "0.1.34", + "version": "0.1.35", "description": "Genetic programming helpers & strategies (tree based & multi-expression programming)", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/math": "^2.2.1", - "@thi.ng/random": "^2.1.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/zipper": "^0.1.28" + "@thi.ng/api": "^6.13.4", + "@thi.ng/math": "^2.2.2", + "@thi.ng/random": "^2.1.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/zipper": "^0.1.29" }, "files": [ "*.js", diff --git a/packages/grid-iterators/CHANGELOG.md b/packages/grid-iterators/CHANGELOG.md index 435ea08bcc..0bceed3324 100644 --- a/packages/grid-iterators/CHANGELOG.md +++ b/packages/grid-iterators/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.4.15](https://github.com/thi-ng/umbrella/compare/@thi.ng/grid-iterators@0.4.14...@thi.ng/grid-iterators@0.4.15) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/grid-iterators + + + + + ## [0.4.14](https://github.com/thi-ng/umbrella/compare/@thi.ng/grid-iterators@0.4.13...@thi.ng/grid-iterators@0.4.14) (2020-11-26) **Note:** Version bump only for package @thi.ng/grid-iterators diff --git a/packages/grid-iterators/package.json b/packages/grid-iterators/package.json index 400ab0e49a..a2214331d5 100644 --- a/packages/grid-iterators/package.json +++ b/packages/grid-iterators/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/grid-iterators", - "version": "0.4.14", + "version": "0.4.15", "description": "2D grid iterators w/ multiple orderings", "module": "./index.js", "main": "./lib/index.js", @@ -50,11 +50,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/arrays": "^0.8.3", - "@thi.ng/binary": "^2.0.18", - "@thi.ng/morton": "^2.0.27", - "@thi.ng/random": "^2.1.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/arrays": "^0.8.4", + "@thi.ng/binary": "^2.0.19", + "@thi.ng/morton": "^2.0.28", + "@thi.ng/random": "^2.1.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/hdiff/CHANGELOG.md b/packages/hdiff/CHANGELOG.md index 05497c1ecc..447a7fe9bb 100644 --- a/packages/hdiff/CHANGELOG.md +++ b/packages/hdiff/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.19](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdiff@0.1.18...@thi.ng/hdiff@0.1.19) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hdiff + + + + + ## [0.1.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdiff@0.1.17...@thi.ng/hdiff@0.1.18) (2020-11-26) **Note:** Version bump only for package @thi.ng/hdiff diff --git a/packages/hdiff/package.json b/packages/hdiff/package.json index 9d607a7347..3371b42b09 100644 --- a/packages/hdiff/package.json +++ b/packages/hdiff/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdiff", - "version": "0.1.18", + "version": "0.1.19", "description": "String diffing w/ hiccup output for further processing, e.g. with @thi.ng/hdom, @thi.ng/hiccup. Includes CLI util to generate HTML, with theme support and code folding", "module": "./index.js", "main": "./lib/index.js", @@ -51,11 +51,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/diff": "^3.2.34", - "@thi.ng/hiccup": "^3.6.3", - "@thi.ng/hiccup-css": "^1.1.41", - "@thi.ng/strings": "^1.11.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/diff": "^3.2.35", + "@thi.ng/hiccup": "^3.6.4", + "@thi.ng/hiccup-css": "^1.1.42", + "@thi.ng/strings": "^1.11.2" }, "files": [ "*.js", diff --git a/packages/hdom-canvas/CHANGELOG.md b/packages/hdom-canvas/CHANGELOG.md index 2a0c14e588..0925de0f68 100644 --- a/packages/hdom-canvas/CHANGELOG.md +++ b/packages/hdom-canvas/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.0.23](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-canvas@3.0.22...@thi.ng/hdom-canvas@3.0.23) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hdom-canvas + + + + + ## [3.0.22](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-canvas@3.0.21...@thi.ng/hdom-canvas@3.0.22) (2020-11-26) **Note:** Version bump only for package @thi.ng/hdom-canvas diff --git a/packages/hdom-canvas/package.json b/packages/hdom-canvas/package.json index 731eff688e..ea352d9889 100644 --- a/packages/hdom-canvas/package.json +++ b/packages/hdom-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom-canvas", - "version": "3.0.22", + "version": "3.0.23", "description": "@thi.ng/hdom component wrapper for declarative canvas scenegraphs", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/diff": "^3.2.34", - "@thi.ng/hdom": "^8.2.12", - "@thi.ng/hiccup-canvas": "^1.1.12" + "@thi.ng/diff": "^3.2.35", + "@thi.ng/hdom": "^8.2.13", + "@thi.ng/hiccup-canvas": "^1.1.13" }, "files": [ "*.js", diff --git a/packages/hdom-components/CHANGELOG.md b/packages/hdom-components/CHANGELOG.md index c7af83656f..ecafb2e231 100644 --- a/packages/hdom-components/CHANGELOG.md +++ b/packages/hdom-components/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.0.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@4.0.16...@thi.ng/hdom-components@4.0.17) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hdom-components + + + + + ## [4.0.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@4.0.15...@thi.ng/hdom-components@4.0.16) (2020-11-26) **Note:** Version bump only for package @thi.ng/hdom-components diff --git a/packages/hdom-components/package.json b/packages/hdom-components/package.json index 906d6e707c..96d7bc9bb5 100644 --- a/packages/hdom-components/package.json +++ b/packages/hdom-components/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom-components", - "version": "4.0.16", + "version": "4.0.17", "description": "Raw, skinnable UI & SVG components for @thi.ng/hdom", "module": "./index.js", "main": "./lib/index.js", @@ -50,11 +50,11 @@ }, "dependencies": { "@thi.ng/adapt-dpi": "^1.0.11", - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/math": "^2.2.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/transducers-stats": "^1.1.42" + "@thi.ng/math": "^2.2.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/transducers-stats": "^1.1.43" }, "files": [ "*.js", diff --git a/packages/hdom-mock/CHANGELOG.md b/packages/hdom-mock/CHANGELOG.md index a82c1cfde8..054861b53d 100644 --- a/packages/hdom-mock/CHANGELOG.md +++ b/packages/hdom-mock/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.45](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-mock@1.1.44...@thi.ng/hdom-mock@1.1.45) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hdom-mock + + + + + ## [1.1.44](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-mock@1.1.43...@thi.ng/hdom-mock@1.1.44) (2020-11-26) **Note:** Version bump only for package @thi.ng/hdom-mock diff --git a/packages/hdom-mock/package.json b/packages/hdom-mock/package.json index ba684d082b..f6d13763d9 100644 --- a/packages/hdom-mock/package.json +++ b/packages/hdom-mock/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom-mock", - "version": "1.1.44", + "version": "1.1.45", "description": "Mock base implementation for @thi.ng/hdom API", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/hdom": "^8.2.12" + "@thi.ng/hdom": "^8.2.13" }, "files": [ "*.js", diff --git a/packages/hdom/CHANGELOG.md b/packages/hdom/CHANGELOG.md index 8d657be616..694a8f037a 100644 --- a/packages/hdom/CHANGELOG.md +++ b/packages/hdom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.2.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@8.2.12...@thi.ng/hdom@8.2.13) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hdom + + + + + ## [8.2.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@8.2.11...@thi.ng/hdom@8.2.12) (2020-11-26) **Note:** Version bump only for package @thi.ng/hdom diff --git a/packages/hdom/package.json b/packages/hdom/package.json index 8c9c86dc86..18c5d07fd7 100644 --- a/packages/hdom/package.json +++ b/packages/hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom", - "version": "8.2.12", + "version": "8.2.13", "description": "Lightweight vanilla ES6 UI component trees with customizable branch-local behaviors", "module": "./index.js", "main": "./lib/index.js", @@ -40,7 +40,7 @@ "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", "@microsoft/api-extractor": "^7.12.0", - "@thi.ng/atom": "^4.1.23", + "@thi.ng/atom": "^4.1.24", "@types/mocha": "^8.0.3", "@types/node": "^14.6.1", "mocha": "^8.2.1", @@ -50,12 +50,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/diff": "^3.2.34", + "@thi.ng/diff": "^3.2.35", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/hiccup": "^3.6.3", + "@thi.ng/hiccup": "^3.6.4", "@thi.ng/prefixes": "^0.1.8" }, "files": [ diff --git a/packages/heaps/CHANGELOG.md b/packages/heaps/CHANGELOG.md index 6aaf7edc84..9ae278fab2 100644 --- a/packages/heaps/CHANGELOG.md +++ b/packages/heaps/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.28](https://github.com/thi-ng/umbrella/compare/@thi.ng/heaps@1.2.27...@thi.ng/heaps@1.2.28) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/heaps + + + + + ## [1.2.27](https://github.com/thi-ng/umbrella/compare/@thi.ng/heaps@1.2.26...@thi.ng/heaps@1.2.27) (2020-11-26) **Note:** Version bump only for package @thi.ng/heaps diff --git a/packages/heaps/package.json b/packages/heaps/package.json index 7b9a7a6535..99ef549f2a 100644 --- a/packages/heaps/package.json +++ b/packages/heaps/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/heaps", - "version": "1.2.27", + "version": "1.2.28", "description": "Various heap implementations for arbitrary values and with customizable ordering", "module": "./index.js", "main": "./lib/index.js", @@ -50,8 +50,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/compare": "^1.3.19" + "@thi.ng/api": "^6.13.4", + "@thi.ng/compare": "^1.3.20" }, "files": [ "*.js", diff --git a/packages/hiccup-canvas/CHANGELOG.md b/packages/hiccup-canvas/CHANGELOG.md index 789c6d3670..97de031011 100644 --- a/packages/hiccup-canvas/CHANGELOG.md +++ b/packages/hiccup-canvas/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-canvas@1.1.12...@thi.ng/hiccup-canvas@1.1.13) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hiccup-canvas + + + + + ## [1.1.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-canvas@1.1.11...@thi.ng/hiccup-canvas@1.1.12) (2020-11-26) **Note:** Version bump only for package @thi.ng/hiccup-canvas diff --git a/packages/hiccup-canvas/package.json b/packages/hiccup-canvas/package.json index 8c80964eab..2b9423141a 100644 --- a/packages/hiccup-canvas/package.json +++ b/packages/hiccup-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-canvas", - "version": "1.1.12", + "version": "1.1.13", "description": "Hiccup shape tree renderer for vanilla Canvas 2D contexts", "module": "./index.js", "main": "./lib/index.js", @@ -48,11 +48,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/color": "^1.3.1", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/color": "^1.3.2", + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/hiccup-carbon-icons/CHANGELOG.md b/packages/hiccup-carbon-icons/CHANGELOG.md index 5c5ebc5a74..1d249b1e48 100644 --- a/packages/hiccup-carbon-icons/CHANGELOG.md +++ b/packages/hiccup-carbon-icons/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-carbon-icons@2.0.6...@thi.ng/hiccup-carbon-icons@2.0.7) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hiccup-carbon-icons + + + + + ## [2.0.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-carbon-icons@2.0.5...@thi.ng/hiccup-carbon-icons@2.0.6) (2020-11-26) **Note:** Version bump only for package @thi.ng/hiccup-carbon-icons diff --git a/packages/hiccup-carbon-icons/package.json b/packages/hiccup-carbon-icons/package.json index 42cba6a094..dd05ca0f02 100644 --- a/packages/hiccup-carbon-icons/package.json +++ b/packages/hiccup-carbon-icons/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-carbon-icons", - "version": "2.0.6", + "version": "2.0.7", "description": "Full set of IBM's Carbon icons in hiccup format", "module": "./index.js", "main": "./lib/index.js", @@ -42,7 +42,7 @@ "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", "@microsoft/api-extractor": "^7.12.0", - "@thi.ng/hiccup": "^3.6.3", + "@thi.ng/hiccup": "^3.6.4", "@types/mocha": "^8.0.3", "@types/node": "^14.6.1", "mocha": "^8.2.1", diff --git a/packages/hiccup-css/CHANGELOG.md b/packages/hiccup-css/CHANGELOG.md index 7300e9b3fb..35bc68280b 100644 --- a/packages/hiccup-css/CHANGELOG.md +++ b/packages/hiccup-css/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.42](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@1.1.41...@thi.ng/hiccup-css@1.1.42) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hiccup-css + + + + + ## [1.1.41](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@1.1.40...@thi.ng/hiccup-css@1.1.41) (2020-11-26) **Note:** Version bump only for package @thi.ng/hiccup-css diff --git a/packages/hiccup-css/package.json b/packages/hiccup-css/package.json index cc99e377da..535e70ac35 100644 --- a/packages/hiccup-css/package.json +++ b/packages/hiccup-css/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-css", - "version": "1.1.41", + "version": "1.1.42", "description": "CSS from nested JS data structures", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/hiccup-html/CHANGELOG.md b/packages/hiccup-html/CHANGELOG.md index 454a14e0b7..9aee8fd64b 100644 --- a/packages/hiccup-html/CHANGELOG.md +++ b/packages/hiccup-html/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.3.9](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-html@0.3.8...@thi.ng/hiccup-html@0.3.9) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hiccup-html + + + + + ## [0.3.8](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-html@0.3.7...@thi.ng/hiccup-html@0.3.8) (2020-11-26) **Note:** Version bump only for package @thi.ng/hiccup-html diff --git a/packages/hiccup-html/package.json b/packages/hiccup-html/package.json index 8f581f854d..00c6de8582 100644 --- a/packages/hiccup-html/package.json +++ b/packages/hiccup-html/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-html", - "version": "0.3.8", + "version": "0.3.9", "description": "100+ type-checked HTML5 element functions for @thi.ng/hiccup related infrastructure", "module": "./index.js", "main": "./lib/index.js", @@ -48,7 +48,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/hiccup-markdown/CHANGELOG.md b/packages/hiccup-markdown/CHANGELOG.md index 71cc4ada2b..01de495f51 100644 --- a/packages/hiccup-markdown/CHANGELOG.md +++ b/packages/hiccup-markdown/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.38](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-markdown@1.2.37...@thi.ng/hiccup-markdown@1.2.38) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hiccup-markdown + + + + + ## [1.2.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-markdown@1.2.36...@thi.ng/hiccup-markdown@1.2.37) (2020-11-26) **Note:** Version bump only for package @thi.ng/hiccup-markdown diff --git a/packages/hiccup-markdown/package.json b/packages/hiccup-markdown/package.json index 4d86292611..c17dc51776 100644 --- a/packages/hiccup-markdown/package.json +++ b/packages/hiccup-markdown/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-markdown", - "version": "1.2.37", + "version": "1.2.38", "description": "Markdown parser & serializer from/to Hiccup format", "module": "./index.js", "main": "./lib/index.js", @@ -49,16 +49,16 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/defmulti": "^1.3.1", + "@thi.ng/defmulti": "^1.3.2", "@thi.ng/errors": "^1.2.24", - "@thi.ng/fsm": "^2.4.28", - "@thi.ng/hiccup": "^3.6.3", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/text-canvas": "^0.2.34", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/fsm": "^2.4.29", + "@thi.ng/hiccup": "^3.6.4", + "@thi.ng/strings": "^1.11.2", + "@thi.ng/text-canvas": "^0.2.35", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/hiccup-svg/CHANGELOG.md b/packages/hiccup-svg/CHANGELOG.md index dea86dd085..d2b95a5412 100644 --- a/packages/hiccup-svg/CHANGELOG.md +++ b/packages/hiccup-svg/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.6.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@3.6.4...@thi.ng/hiccup-svg@3.6.5) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hiccup-svg + + + + + ## [3.6.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@3.6.3...@thi.ng/hiccup-svg@3.6.4) (2020-11-26) **Note:** Version bump only for package @thi.ng/hiccup-svg diff --git a/packages/hiccup-svg/package.json b/packages/hiccup-svg/package.json index 4a97a86b59..4f989b821a 100644 --- a/packages/hiccup-svg/package.json +++ b/packages/hiccup-svg/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-svg", - "version": "3.6.4", + "version": "3.6.5", "description": "SVG element functions for @thi.ng/hiccup & @thi.ng/hdom", "module": "./index.js", "main": "./lib/index.js", @@ -50,7 +50,7 @@ }, "dependencies": { "@thi.ng/checks": "^2.7.11", - "@thi.ng/color": "^1.3.1", + "@thi.ng/color": "^1.3.2", "@thi.ng/prefixes": "^0.1.8" }, "files": [ diff --git a/packages/hiccup/CHANGELOG.md b/packages/hiccup/CHANGELOG.md index 430d09c1ae..cbb92ac54c 100644 --- a/packages/hiccup/CHANGELOG.md +++ b/packages/hiccup/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.6.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup@3.6.3...@thi.ng/hiccup@3.6.4) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/hiccup + + + + + ## [3.6.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup@3.6.2...@thi.ng/hiccup@3.6.3) (2020-11-26) **Note:** Version bump only for package @thi.ng/hiccup diff --git a/packages/hiccup/package.json b/packages/hiccup/package.json index b8665db231..ed782fabd6 100644 --- a/packages/hiccup/package.json +++ b/packages/hiccup/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup", - "version": "3.6.3", + "version": "3.6.4", "description": "HTML/SVG/XML serialization of nested data structures, iterables & closures", "module": "./index.js", "main": "./lib/index.js", @@ -40,7 +40,7 @@ "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", "@microsoft/api-extractor": "^7.12.0", - "@thi.ng/atom": "^4.1.23", + "@thi.ng/atom": "^4.1.24", "@types/mocha": "^8.0.3", "@types/node": "^14.6.1", "mocha": "^8.2.1", @@ -50,7 +50,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", "@thi.ng/prefixes": "^0.1.8" diff --git a/packages/idgen/CHANGELOG.md b/packages/idgen/CHANGELOG.md index 73c3398f3d..6e75e40d25 100644 --- a/packages/idgen/CHANGELOG.md +++ b/packages/idgen/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.27](https://github.com/thi-ng/umbrella/compare/@thi.ng/idgen@0.2.26...@thi.ng/idgen@0.2.27) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/idgen + + + + + ## [0.2.26](https://github.com/thi-ng/umbrella/compare/@thi.ng/idgen@0.2.25...@thi.ng/idgen@0.2.26) (2020-11-26) **Note:** Version bump only for package @thi.ng/idgen diff --git a/packages/idgen/package.json b/packages/idgen/package.json index 9646240d45..afb8f8a84f 100644 --- a/packages/idgen/package.json +++ b/packages/idgen/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/idgen", - "version": "0.2.26", + "version": "0.2.27", "description": "Generator of opaque numeric identifiers with optional support for ID versioning and efficient re-use", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "tslib": "2.0.1" }, "files": [ diff --git a/packages/iges/CHANGELOG.md b/packages/iges/CHANGELOG.md index b3f398f513..caf177d2a0 100644 --- a/packages/iges/CHANGELOG.md +++ b/packages/iges/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.52](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@1.1.51...@thi.ng/iges@1.1.52) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/iges + + + + + ## [1.1.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@1.1.50...@thi.ng/iges@1.1.51) (2020-11-26) **Note:** Version bump only for package @thi.ng/iges diff --git a/packages/iges/package.json b/packages/iges/package.json index c99aaccf45..92d4b85af1 100644 --- a/packages/iges/package.json +++ b/packages/iges/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/iges", - "version": "1.1.51", + "version": "1.1.52", "description": "IGES 5.3 serializer for (currently only) polygonal geometry, both open & closed", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/defmulti": "^1.3.1", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/defmulti": "^1.3.2", + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/imgui/CHANGELOG.md b/packages/imgui/CHANGELOG.md index 56f06705c4..ea13b47789 100644 --- a/packages/imgui/CHANGELOG.md +++ b/packages/imgui/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.44](https://github.com/thi-ng/umbrella/compare/@thi.ng/imgui@0.2.43...@thi.ng/imgui@0.2.44) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/imgui + + + + + ## [0.2.43](https://github.com/thi-ng/umbrella/compare/@thi.ng/imgui@0.2.42...@thi.ng/imgui@0.2.43) (2020-11-26) **Note:** Version bump only for package @thi.ng/imgui diff --git a/packages/imgui/package.json b/packages/imgui/package.json index a2ecf1065b..d46d06dd06 100644 --- a/packages/imgui/package.json +++ b/packages/imgui/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/imgui", - "version": "0.2.43", + "version": "0.2.44", "description": "Immediate mode GUI with flexible state handling & data only shape output", "module": "./index.js", "main": "./lib/index.js", @@ -49,16 +49,16 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/geom": "^1.13.2", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/geom-isec": "^0.7.1", - "@thi.ng/geom-tessellate": "^0.2.50", + "@thi.ng/geom": "^1.13.3", + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/geom-isec": "^0.7.2", + "@thi.ng/geom-tessellate": "^0.2.51", "@thi.ng/layout": "^0.1.25", - "@thi.ng/math": "^2.2.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/interceptors/CHANGELOG.md b/packages/interceptors/CHANGELOG.md index 261a0ce30d..42af0ebebc 100644 --- a/packages/interceptors/CHANGELOG.md +++ b/packages/interceptors/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.2.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.2.34...@thi.ng/interceptors@2.2.35) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/interceptors + + + + + ## [2.2.34](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.2.33...@thi.ng/interceptors@2.2.34) (2020-11-26) **Note:** Version bump only for package @thi.ng/interceptors diff --git a/packages/interceptors/package.json b/packages/interceptors/package.json index 5529b41161..d8b0a54ef4 100644 --- a/packages/interceptors/package.json +++ b/packages/interceptors/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/interceptors", - "version": "2.2.34", + "version": "2.2.35", "description": "Interceptor based event bus, side effect & immutable state handling", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/atom": "^4.1.23", + "@thi.ng/api": "^6.13.4", + "@thi.ng/atom": "^4.1.24", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/paths": "^4.1.9" + "@thi.ng/paths": "^4.1.10" }, "files": [ "*.js", diff --git a/packages/intervals/CHANGELOG.md b/packages/intervals/CHANGELOG.md index 274fafe9d1..aef05a388a 100644 --- a/packages/intervals/CHANGELOG.md +++ b/packages/intervals/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/intervals@2.1.1...@thi.ng/intervals@2.1.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/intervals + + + + + ## [2.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/intervals@2.1.0...@thi.ng/intervals@2.1.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/intervals diff --git a/packages/intervals/package.json b/packages/intervals/package.json index e29e835c94..4c961493ef 100644 --- a/packages/intervals/package.json +++ b/packages/intervals/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/intervals", - "version": "2.1.1", + "version": "2.1.2", "description": "Closed/open/semi-open interval data type, queries & operations", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/dlogic": "^1.0.34", + "@thi.ng/dlogic": "^1.0.35", "@thi.ng/errors": "^1.2.24" }, "files": [ diff --git a/packages/iterators/CHANGELOG.md b/packages/iterators/CHANGELOG.md index 73deb49c6d..11255de646 100644 --- a/packages/iterators/CHANGELOG.md +++ b/packages/iterators/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.1.43](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@5.1.42...@thi.ng/iterators@5.1.43) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/iterators + + + + + ## [5.1.42](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@5.1.41...@thi.ng/iterators@5.1.42) (2020-11-26) **Note:** Version bump only for package @thi.ng/iterators diff --git a/packages/iterators/package.json b/packages/iterators/package.json index 20c90326f7..e21e56a2b7 100644 --- a/packages/iterators/package.json +++ b/packages/iterators/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/iterators", - "version": "5.1.42", + "version": "5.1.43", "description": "Clojure inspired, composable ES6 iterators & generators", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/dcons": "^2.3.2", + "@thi.ng/api": "^6.13.4", + "@thi.ng/dcons": "^2.3.3", "@thi.ng/errors": "^1.2.24" }, "files": [ diff --git a/packages/leb128/CHANGELOG.md b/packages/leb128/CHANGELOG.md index 37b3881add..17dd67c4c5 100644 --- a/packages/leb128/CHANGELOG.md +++ b/packages/leb128/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/leb128@1.0.36...@thi.ng/leb128@1.0.37) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/leb128 + + + + + ## [1.0.36](https://github.com/thi-ng/umbrella/compare/@thi.ng/leb128@1.0.35...@thi.ng/leb128@1.0.36) (2020-11-26) **Note:** Version bump only for package @thi.ng/leb128 diff --git a/packages/leb128/package.json b/packages/leb128/package.json index 9141bfd11c..a3fe8988f8 100644 --- a/packages/leb128/package.json +++ b/packages/leb128/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/leb128", - "version": "1.0.36", + "version": "1.0.37", "description": "WASM based LEB128 encoder / decoder (signed & unsigned)", "module": "./index.js", "main": "./lib/index.js", @@ -52,7 +52,7 @@ "dependencies": { "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/transducers-binary": "^0.5.32" + "@thi.ng/transducers-binary": "^0.5.33" }, "files": [ "*.js", diff --git a/packages/lsys/CHANGELOG.md b/packages/lsys/CHANGELOG.md index 4380a74170..103105f1ec 100644 --- a/packages/lsys/CHANGELOG.md +++ b/packages/lsys/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.65](https://github.com/thi-ng/umbrella/compare/@thi.ng/lsys@0.2.64...@thi.ng/lsys@0.2.65) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/lsys + + + + + ## [0.2.64](https://github.com/thi-ng/umbrella/compare/@thi.ng/lsys@0.2.63...@thi.ng/lsys@0.2.64) (2020-11-26) **Note:** Version bump only for package @thi.ng/lsys diff --git a/packages/lsys/package.json b/packages/lsys/package.json index 906e9388f7..c18f6616b7 100644 --- a/packages/lsys/package.json +++ b/packages/lsys/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/lsys", - "version": "0.2.64", + "version": "0.2.65", "description": "Functional, extensible L-System architecture w/ support for probabilistic rules", "module": "./index.js", "main": "./lib/index.js", @@ -49,13 +49,13 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/compose": "^1.4.20", + "@thi.ng/api": "^6.13.4", + "@thi.ng/compose": "^1.4.21", "@thi.ng/errors": "^1.2.24", - "@thi.ng/math": "^2.2.1", - "@thi.ng/random": "^2.1.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/random": "^2.1.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/malloc/CHANGELOG.md b/packages/malloc/CHANGELOG.md index 24e1e4ed12..0d04d23d1f 100644 --- a/packages/malloc/CHANGELOG.md +++ b/packages/malloc/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.2.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/malloc@4.2.2...@thi.ng/malloc@4.2.3) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/malloc + + + + + ## [4.2.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/malloc@4.2.1...@thi.ng/malloc@4.2.2) (2020-11-26) **Note:** Version bump only for package @thi.ng/malloc diff --git a/packages/malloc/package.json b/packages/malloc/package.json index 950c7ff755..6b25bc4c85 100644 --- a/packages/malloc/package.json +++ b/packages/malloc/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/malloc", - "version": "4.2.2", + "version": "4.2.3", "description": "ArrayBuffer based malloc() impl for hybrid JS/WASM use cases, based on thi.ng/tinyalloc", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24" }, diff --git a/packages/math/CHANGELOG.md b/packages/math/CHANGELOG.md index 9a5c5a9187..5ffb5d45a8 100644 --- a/packages/math/CHANGELOG.md +++ b/packages/math/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.2.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/math@2.2.1...@thi.ng/math@2.2.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/math + + + + + ## [2.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/math@2.2.0...@thi.ng/math@2.2.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/math diff --git a/packages/math/package.json b/packages/math/package.json index 9c1053879e..de778d2f4a 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/math", - "version": "2.2.1", + "version": "2.2.2", "description": "Assorted common math functions & utilities", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/matrices/CHANGELOG.md b/packages/matrices/CHANGELOG.md index a0f997d5bc..1fe2a900cf 100644 --- a/packages/matrices/CHANGELOG.md +++ b/packages/matrices/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.6.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/matrices@0.6.36...@thi.ng/matrices@0.6.37) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/matrices + + + + + ## [0.6.36](https://github.com/thi-ng/umbrella/compare/@thi.ng/matrices@0.6.35...@thi.ng/matrices@0.6.36) (2020-11-26) **Note:** Version bump only for package @thi.ng/matrices diff --git a/packages/matrices/package.json b/packages/matrices/package.json index ca3d0b9d35..6092891585 100644 --- a/packages/matrices/package.json +++ b/packages/matrices/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/matrices", - "version": "0.6.36", + "version": "0.6.37", "description": "Matrix & quaternion operations for 2D/3D geometry processing", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/math": "^2.2.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/memoize/CHANGELOG.md b/packages/memoize/CHANGELOG.md index f82f3dfa5f..9ab8c14acf 100644 --- a/packages/memoize/CHANGELOG.md +++ b/packages/memoize/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/memoize@2.1.5...@thi.ng/memoize@2.1.6) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/memoize + + + + + ## [2.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/memoize@2.1.4...@thi.ng/memoize@2.1.5) (2020-11-26) **Note:** Version bump only for package @thi.ng/memoize diff --git a/packages/memoize/package.json b/packages/memoize/package.json index 88792694f6..aff5c574cf 100644 --- a/packages/memoize/package.json +++ b/packages/memoize/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/memoize", - "version": "2.1.5", + "version": "2.1.6", "description": "Function memoization with configurable caching", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/mime/CHANGELOG.md b/packages/mime/CHANGELOG.md index bd6d2a145c..657b6b68d6 100644 --- a/packages/mime/CHANGELOG.md +++ b/packages/mime/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.25](https://github.com/thi-ng/umbrella/compare/@thi.ng/mime@0.1.24...@thi.ng/mime@0.1.25) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/mime + + + + + ## [0.1.24](https://github.com/thi-ng/umbrella/compare/@thi.ng/mime@0.1.23...@thi.ng/mime@0.1.24) (2020-11-26) **Note:** Version bump only for package @thi.ng/mime diff --git a/packages/mime/package.json b/packages/mime/package.json index ff97832a69..686a531a2c 100644 --- a/packages/mime/package.json +++ b/packages/mime/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/mime", - "version": "0.1.24", + "version": "0.1.25", "description": "350+ file extension to MIME type mappings, based on mime-db", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/morton/CHANGELOG.md b/packages/morton/CHANGELOG.md index 5c3467f3d0..bbb0bfb079 100644 --- a/packages/morton/CHANGELOG.md +++ b/packages/morton/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.28](https://github.com/thi-ng/umbrella/compare/@thi.ng/morton@2.0.27...@thi.ng/morton@2.0.28) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/morton + + + + + ## [2.0.27](https://github.com/thi-ng/umbrella/compare/@thi.ng/morton@2.0.26...@thi.ng/morton@2.0.27) (2020-11-26) **Note:** Version bump only for package @thi.ng/morton diff --git a/packages/morton/package.json b/packages/morton/package.json index 6f9cb7b9dd..eae962dc27 100644 --- a/packages/morton/package.json +++ b/packages/morton/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/morton", - "version": "2.0.27", + "version": "2.0.28", "description": "Z-order curve / Morton encoding, decoding & range extraction for arbitrary dimensions", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", - "@thi.ng/math": "^2.2.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", + "@thi.ng/math": "^2.2.2" }, "files": [ "*.js", diff --git a/packages/oquery/CHANGELOG.md b/packages/oquery/CHANGELOG.md index c5c4a84a5f..5a002a0b92 100644 --- a/packages/oquery/CHANGELOG.md +++ b/packages/oquery/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/oquery@0.1.15...@thi.ng/oquery@0.2.0) (2020-12-07) + + +### Features + +* **oquery:** add array support, add QueryOpts ([8498db0](https://github.com/thi-ng/umbrella/commit/8498db037216a6ebcd15cb76a141fedc88feecf3)) +* **oquery:** add defKeyQuery(), refactor/fix types ([4c5ba42](https://github.com/thi-ng/umbrella/commit/4c5ba4256c3b56f4d1e70069675e39f26ac11887)) + + + + + ## [0.1.15](https://github.com/thi-ng/umbrella/compare/@thi.ng/oquery@0.1.14...@thi.ng/oquery@0.1.15) (2020-11-26) **Note:** Version bump only for package @thi.ng/oquery diff --git a/packages/oquery/package.json b/packages/oquery/package.json index 8cda2a9246..a2f44aa315 100644 --- a/packages/oquery/package.json +++ b/packages/oquery/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/oquery", - "version": "0.1.15", + "version": "0.2.0", "description": "Datalog-inspired, optimized pattern/predicate query engine for JS objects & arrays", "module": "./index.js", "main": "./lib/index.js", @@ -48,10 +48,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/associative": "^5.0.10", + "@thi.ng/api": "^6.13.4", + "@thi.ng/associative": "^5.0.11", "@thi.ng/checks": "^2.7.11", - "@thi.ng/defmulti": "^1.3.1", + "@thi.ng/defmulti": "^1.3.2", "@thi.ng/equiv": "^1.0.33" }, "files": [ diff --git a/packages/parse/CHANGELOG.md b/packages/parse/CHANGELOG.md index 252debe70d..b24e6b0dc4 100644 --- a/packages/parse/CHANGELOG.md +++ b/packages/parse/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.9.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/parse@0.9.6...@thi.ng/parse@0.9.7) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/parse + + + + + ## [0.9.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/parse@0.9.5...@thi.ng/parse@0.9.6) (2020-11-26) **Note:** Version bump only for package @thi.ng/parse diff --git a/packages/parse/package.json b/packages/parse/package.json index 5f0cc50675..1ed639d676 100644 --- a/packages/parse/package.json +++ b/packages/parse/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/parse", - "version": "0.9.6", + "version": "0.9.7", "description": "Purely functional parser combinators & AST generation for generic inputs", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/defmulti": "^1.3.1", + "@thi.ng/defmulti": "^1.3.2", "@thi.ng/errors": "^1.2.24", - "@thi.ng/strings": "^1.11.1" + "@thi.ng/strings": "^1.11.2" }, "files": [ "*.js", diff --git a/packages/paths/CHANGELOG.md b/packages/paths/CHANGELOG.md index a69f32f2b2..53e76bdba7 100644 --- a/packages/paths/CHANGELOG.md +++ b/packages/paths/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.1.10](https://github.com/thi-ng/umbrella/compare/@thi.ng/paths@4.1.9...@thi.ng/paths@4.1.10) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/paths + + + + + ## [4.1.9](https://github.com/thi-ng/umbrella/compare/@thi.ng/paths@4.1.8...@thi.ng/paths@4.1.9) (2020-11-26) **Note:** Version bump only for package @thi.ng/paths diff --git a/packages/paths/package.json b/packages/paths/package.json index 8ab488d48b..9d8d77e223 100644 --- a/packages/paths/package.json +++ b/packages/paths/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/paths", - "version": "4.1.9", + "version": "4.1.10", "description": "Immutable, optimized and optionally typed path-based object property / array accessors with structural sharing", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24" }, diff --git a/packages/pixel/CHANGELOG.md b/packages/pixel/CHANGELOG.md index ac03439c41..578ffbe470 100644 --- a/packages/pixel/CHANGELOG.md +++ b/packages/pixel/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.4.9](https://github.com/thi-ng/umbrella/compare/@thi.ng/pixel@0.4.8...@thi.ng/pixel@0.4.9) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/pixel + + + + + ## [0.4.8](https://github.com/thi-ng/umbrella/compare/@thi.ng/pixel@0.4.7...@thi.ng/pixel@0.4.8) (2020-11-26) **Note:** Version bump only for package @thi.ng/pixel diff --git a/packages/pixel/package.json b/packages/pixel/package.json index c6aeae8df1..3c97bf7c32 100644 --- a/packages/pixel/package.json +++ b/packages/pixel/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/pixel", - "version": "0.4.8", + "version": "0.4.9", "description": "Typed array backed, packed integer and unpacked floating point pixel buffers w/ customizable formats, blitting, dithering, conversions", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/math": "^2.2.1", - "@thi.ng/porter-duff": "^0.1.33" + "@thi.ng/math": "^2.2.2", + "@thi.ng/porter-duff": "^0.1.34" }, "files": [ "*.js", diff --git a/packages/pointfree-lang/CHANGELOG.md b/packages/pointfree-lang/CHANGELOG.md index 5f534e67a8..fc74fa49ad 100644 --- a/packages/pointfree-lang/CHANGELOG.md +++ b/packages/pointfree-lang/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.4.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree-lang@1.4.16...@thi.ng/pointfree-lang@1.4.17) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/pointfree-lang + + + + + ## [1.4.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree-lang@1.4.15...@thi.ng/pointfree-lang@1.4.16) (2020-11-26) **Note:** Version bump only for package @thi.ng/pointfree-lang diff --git a/packages/pointfree-lang/package.json b/packages/pointfree-lang/package.json index f98d636c52..92ed7a14b7 100644 --- a/packages/pointfree-lang/package.json +++ b/packages/pointfree-lang/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/pointfree-lang", - "version": "1.4.16", + "version": "1.4.17", "description": "Forth style syntax layer/compiler & CLI for the @thi.ng/pointfree DSL", "module": "./index.js", "main": "./lib/index.js", @@ -53,10 +53,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/bench": "^2.0.23", + "@thi.ng/api": "^6.13.4", + "@thi.ng/bench": "^2.0.24", "@thi.ng/errors": "^1.2.24", - "@thi.ng/pointfree": "^2.0.17", + "@thi.ng/pointfree": "^2.0.18", "commander": "^6.2.0" }, "files": [ diff --git a/packages/pointfree/CHANGELOG.md b/packages/pointfree/CHANGELOG.md index 00dcf8f146..1727281865 100644 --- a/packages/pointfree/CHANGELOG.md +++ b/packages/pointfree/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree@2.0.17...@thi.ng/pointfree@2.0.18) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/pointfree + + + + + ## [2.0.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree@2.0.16...@thi.ng/pointfree@2.0.17) (2020-11-26) **Note:** Version bump only for package @thi.ng/pointfree diff --git a/packages/pointfree/package.json b/packages/pointfree/package.json index d299a12131..58fa20971b 100644 --- a/packages/pointfree/package.json +++ b/packages/pointfree/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/pointfree", - "version": "2.0.17", + "version": "2.0.18", "description": "Pointfree functional composition / Forth style stack execution engine", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/compose": "^1.4.20", + "@thi.ng/compose": "^1.4.21", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24" }, diff --git a/packages/poisson/CHANGELOG.md b/packages/poisson/CHANGELOG.md index 08422310b9..ba3aba3962 100644 --- a/packages/poisson/CHANGELOG.md +++ b/packages/poisson/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.21](https://github.com/thi-ng/umbrella/compare/@thi.ng/poisson@1.1.20...@thi.ng/poisson@1.1.21) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/poisson + + + + + ## [1.1.20](https://github.com/thi-ng/umbrella/compare/@thi.ng/poisson@1.1.19...@thi.ng/poisson@1.1.20) (2020-11-26) **Note:** Version bump only for package @thi.ng/poisson diff --git a/packages/poisson/package.json b/packages/poisson/package.json index 1f43da8dc5..7d66067e99 100644 --- a/packages/poisson/package.json +++ b/packages/poisson/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/poisson", - "version": "1.1.20", + "version": "1.1.21", "description": "nD Stratified grid and Poisson-disc sampling w/ support for spatial density functions and custom PRNGs", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/geom-api": "^1.1.3", - "@thi.ng/random": "^2.1.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/geom-api": "^1.1.4", + "@thi.ng/random": "^2.1.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/porter-duff/CHANGELOG.md b/packages/porter-duff/CHANGELOG.md index ef8abde2fc..519a913076 100644 --- a/packages/porter-duff/CHANGELOG.md +++ b/packages/porter-duff/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.34](https://github.com/thi-ng/umbrella/compare/@thi.ng/porter-duff@0.1.33...@thi.ng/porter-duff@0.1.34) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/porter-duff + + + + + ## [0.1.33](https://github.com/thi-ng/umbrella/compare/@thi.ng/porter-duff@0.1.32...@thi.ng/porter-duff@0.1.33) (2020-11-26) **Note:** Version bump only for package @thi.ng/porter-duff diff --git a/packages/porter-duff/package.json b/packages/porter-duff/package.json index 010e168d9c..bc75d788f0 100644 --- a/packages/porter-duff/package.json +++ b/packages/porter-duff/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/porter-duff", - "version": "0.1.33", + "version": "0.1.34", "description": "Porter-Duff operators for packed ints & float-array alpha compositing", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/math": "^2.2.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/math": "^2.2.2" }, "files": [ "*.js", diff --git a/packages/ramp/CHANGELOG.md b/packages/ramp/CHANGELOG.md index dfe03d3f05..73455197ea 100644 --- a/packages/ramp/CHANGELOG.md +++ b/packages/ramp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.39](https://github.com/thi-ng/umbrella/compare/@thi.ng/ramp@0.1.38...@thi.ng/ramp@0.1.39) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/ramp + + + + + ## [0.1.38](https://github.com/thi-ng/umbrella/compare/@thi.ng/ramp@0.1.37...@thi.ng/ramp@0.1.38) (2020-11-26) **Note:** Version bump only for package @thi.ng/ramp diff --git a/packages/ramp/package.json b/packages/ramp/package.json index 7b4d28c4ab..de2190c73c 100644 --- a/packages/ramp/package.json +++ b/packages/ramp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/ramp", - "version": "0.1.38", + "version": "0.1.39", "description": "Parametric interpolated 1D lookup tables for remapping values", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/arrays": "^0.8.3", - "@thi.ng/compare": "^1.3.19", - "@thi.ng/math": "^2.2.1", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/arrays": "^0.8.4", + "@thi.ng/compare": "^1.3.20", + "@thi.ng/math": "^2.2.2", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/random/CHANGELOG.md b/packages/random/CHANGELOG.md index 70894ffb19..61abc1c994 100644 --- a/packages/random/CHANGELOG.md +++ b/packages/random/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/random@2.1.1...@thi.ng/random@2.1.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/random + + + + + ## [2.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/random@2.1.0...@thi.ng/random@2.1.1) (2020-11-26) diff --git a/packages/random/package.json b/packages/random/package.json index db1a67902a..4f59011261 100644 --- a/packages/random/package.json +++ b/packages/random/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/random", - "version": "2.1.1", + "version": "2.1.2", "description": "Pseudo-random number generators w/ unified API", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/hex": "^0.1.1" }, diff --git a/packages/range-coder/CHANGELOG.md b/packages/range-coder/CHANGELOG.md index 38573e071b..145d514ce9 100644 --- a/packages/range-coder/CHANGELOG.md +++ b/packages/range-coder/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.62](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@1.0.61...@thi.ng/range-coder@1.0.62) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/range-coder + + + + + ## [1.0.61](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@1.0.60...@thi.ng/range-coder@1.0.61) (2020-11-26) **Note:** Version bump only for package @thi.ng/range-coder diff --git a/packages/range-coder/package.json b/packages/range-coder/package.json index daf0174827..fe6fcebf30 100644 --- a/packages/range-coder/package.json +++ b/packages/range-coder/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/range-coder", - "version": "1.0.61", + "version": "1.0.62", "description": "Binary data range encoder / decoder", "module": "./index.js", "main": "./lib/index.js", @@ -40,7 +40,7 @@ "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", "@microsoft/api-extractor": "^7.12.0", - "@thi.ng/transducers": "^7.5.1", + "@thi.ng/transducers": "^7.5.2", "@types/mocha": "^8.0.3", "@types/node": "^14.6.1", "mocha": "^8.2.1", diff --git a/packages/rdom-canvas/CHANGELOG.md b/packages/rdom-canvas/CHANGELOG.md index c1a95eda9f..1bbe6bb944 100644 --- a/packages/rdom-canvas/CHANGELOG.md +++ b/packages/rdom-canvas/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.21](https://github.com/thi-ng/umbrella/compare/@thi.ng/rdom-canvas@0.1.20...@thi.ng/rdom-canvas@0.1.21) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rdom-canvas + + + + + ## [0.1.20](https://github.com/thi-ng/umbrella/compare/@thi.ng/rdom-canvas@0.1.19...@thi.ng/rdom-canvas@0.1.20) (2020-11-26) **Note:** Version bump only for package @thi.ng/rdom-canvas diff --git a/packages/rdom-canvas/package.json b/packages/rdom-canvas/package.json index 33ccd774cd..3f44d0c8cd 100644 --- a/packages/rdom-canvas/package.json +++ b/packages/rdom-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rdom-canvas", - "version": "0.1.20", + "version": "0.1.21", "description": "@thi.ng/rdom component wrapper for @thi.ng/hiccup-canvas and declarative canvas drawing", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ }, "dependencies": { "@thi.ng/adapt-dpi": "^1.0.11", - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/hiccup-canvas": "^1.1.12", - "@thi.ng/rdom": "^0.2.16", - "@thi.ng/rstream": "^5.0.9", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/hiccup-canvas": "^1.1.13", + "@thi.ng/rdom": "^0.3.0", + "@thi.ng/rstream": "^5.0.10", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/rdom-components/CHANGELOG.md b/packages/rdom-components/CHANGELOG.md index 32cfce299c..388f6c5333 100644 --- a/packages/rdom-components/CHANGELOG.md +++ b/packages/rdom-components/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/rdom-components@0.1.17...@thi.ng/rdom-components@0.1.18) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rdom-components + + + + + ## [0.1.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/rdom-components@0.1.16...@thi.ng/rdom-components@0.1.17) (2020-11-26) **Note:** Version bump only for package @thi.ng/rdom-components diff --git a/packages/rdom-components/package.json b/packages/rdom-components/package.json index b7652b19bc..109a6fd017 100644 --- a/packages/rdom-components/package.json +++ b/packages/rdom-components/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rdom-components", - "version": "0.1.17", + "version": "0.1.18", "description": "Collection of unstyled, customizable components for @thi.ng/rdom", "module": "./index.js", "main": "./lib/index.js", @@ -48,13 +48,13 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/associative": "^5.0.10", - "@thi.ng/hiccup-html": "^0.3.8", - "@thi.ng/rdom": "^0.2.16", - "@thi.ng/rstream": "^5.0.9", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/associative": "^5.0.11", + "@thi.ng/hiccup-html": "^0.3.9", + "@thi.ng/rdom": "^0.3.0", + "@thi.ng/rstream": "^5.0.10", + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/rdom/CHANGELOG.md b/packages/rdom/CHANGELOG.md index 459ca806d4..325e6fc7ee 100644 --- a/packages/rdom/CHANGELOG.md +++ b/packages/rdom/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/rdom@0.2.16...@thi.ng/rdom@0.3.0) (2020-12-07) + + +### Features + +* **rdom:** add $subObject() wrapper, add docs ([cd5cf08](https://github.com/thi-ng/umbrella/commit/cd5cf08d6ae0ffb5ff8a89a19918a563fb889cbd)) + + + + + ## [0.2.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/rdom@0.2.15...@thi.ng/rdom@0.2.16) (2020-11-26) **Note:** Version bump only for package @thi.ng/rdom diff --git a/packages/rdom/package.json b/packages/rdom/package.json index 8ee34c0766..9c156df399 100644 --- a/packages/rdom/package.json +++ b/packages/rdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rdom", - "version": "0.2.16", + "version": "0.3.0", "description": "Lightweight, reactive, VDOM-less UI/DOM components with async lifecycle and @thi.ng/hiccup compatible", "module": "./index.js", "main": "./lib/index.js", @@ -49,14 +49,14 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/hiccup": "^3.6.3", - "@thi.ng/paths": "^4.1.9", + "@thi.ng/hiccup": "^3.6.4", + "@thi.ng/paths": "^4.1.10", "@thi.ng/prefixes": "^0.1.8", - "@thi.ng/rstream": "^5.0.9", - "@thi.ng/strings": "^1.11.1" + "@thi.ng/rstream": "^5.0.10", + "@thi.ng/strings": "^1.11.2" }, "files": [ "*.js", diff --git a/packages/resolve-map/CHANGELOG.md b/packages/resolve-map/CHANGELOG.md index e055d867b1..a6fd6910c7 100644 --- a/packages/resolve-map/CHANGELOG.md +++ b/packages/resolve-map/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.2.9](https://github.com/thi-ng/umbrella/compare/@thi.ng/resolve-map@4.2.8...@thi.ng/resolve-map@4.2.9) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/resolve-map + + + + + ## [4.2.8](https://github.com/thi-ng/umbrella/compare/@thi.ng/resolve-map@4.2.7...@thi.ng/resolve-map@4.2.8) (2020-11-26) **Note:** Version bump only for package @thi.ng/resolve-map diff --git a/packages/resolve-map/package.json b/packages/resolve-map/package.json index 2660f958ab..40fd975370 100644 --- a/packages/resolve-map/package.json +++ b/packages/resolve-map/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/resolve-map", - "version": "4.2.8", + "version": "4.2.9", "description": "DAG resolution of vanilla objects & arrays with internally linked values", "module": "./index.js", "main": "./lib/index.js", @@ -48,10 +48,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/paths": "^4.1.9" + "@thi.ng/paths": "^4.1.10" }, "files": [ "*.js", diff --git a/packages/router/CHANGELOG.md b/packages/router/CHANGELOG.md index fd9fa481e3..4d0e221552 100644 --- a/packages/router/CHANGELOG.md +++ b/packages/router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.36](https://github.com/thi-ng/umbrella/compare/@thi.ng/router@2.0.35...@thi.ng/router@2.0.36) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/router + + + + + ## [2.0.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/router@2.0.34...@thi.ng/router@2.0.35) (2020-11-26) **Note:** Version bump only for package @thi.ng/router diff --git a/packages/router/package.json b/packages/router/package.json index 7a5f3d4e82..20a975f017 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/router", - "version": "2.0.35", + "version": "2.0.36", "description": "Generic router for browser & non-browser based applications", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", diff --git a/packages/rstream-csp/CHANGELOG.md b/packages/rstream-csp/CHANGELOG.md index 9eda3a800c..c2f7701d03 100644 --- a/packages/rstream-csp/CHANGELOG.md +++ b/packages/rstream-csp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.45](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@2.0.44...@thi.ng/rstream-csp@2.0.45) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rstream-csp + + + + + ## [2.0.44](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@2.0.43...@thi.ng/rstream-csp@2.0.44) (2020-11-26) **Note:** Version bump only for package @thi.ng/rstream-csp diff --git a/packages/rstream-csp/package.json b/packages/rstream-csp/package.json index b0ade8724a..405e26cebc 100644 --- a/packages/rstream-csp/package.json +++ b/packages/rstream-csp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-csp", - "version": "2.0.44", + "version": "2.0.45", "description": "@thi.ng/csp bridge module for @thi.ng/rstream", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/csp": "^1.1.42", - "@thi.ng/rstream": "^5.0.9" + "@thi.ng/csp": "^1.1.43", + "@thi.ng/rstream": "^5.0.10" }, "files": [ "*.js", diff --git a/packages/rstream-dot/CHANGELOG.md b/packages/rstream-dot/CHANGELOG.md index e774e83665..6f439560f8 100644 --- a/packages/rstream-dot/CHANGELOG.md +++ b/packages/rstream-dot/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.52](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@1.1.51...@thi.ng/rstream-dot@1.1.52) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rstream-dot + + + + + ## [1.1.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@1.1.50...@thi.ng/rstream-dot@1.1.51) (2020-11-26) **Note:** Version bump only for package @thi.ng/rstream-dot diff --git a/packages/rstream-dot/package.json b/packages/rstream-dot/package.json index d09babb312..ef2803d802 100644 --- a/packages/rstream-dot/package.json +++ b/packages/rstream-dot/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-dot", - "version": "1.1.51", + "version": "1.1.52", "description": "Graphviz DOT conversion of @thi.ng/rstream dataflow graph topologies", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/rstream": "^5.0.9" + "@thi.ng/rstream": "^5.0.10" }, "files": [ "*.js", diff --git a/packages/rstream-gestures/CHANGELOG.md b/packages/rstream-gestures/CHANGELOG.md index de432e9910..090bf3b985 100644 --- a/packages/rstream-gestures/CHANGELOG.md +++ b/packages/rstream-gestures/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.45](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@2.0.44...@thi.ng/rstream-gestures@2.0.45) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rstream-gestures + + + + + ## [2.0.44](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@2.0.43...@thi.ng/rstream-gestures@2.0.44) (2020-11-26) **Note:** Version bump only for package @thi.ng/rstream-gestures diff --git a/packages/rstream-gestures/package.json b/packages/rstream-gestures/package.json index 4d24a13b94..ad5914d2c5 100644 --- a/packages/rstream-gestures/package.json +++ b/packages/rstream-gestures/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-gestures", - "version": "2.0.44", + "version": "2.0.45", "description": "Unified mouse, mouse wheel & multi-touch event stream abstraction", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/math": "^2.2.1", - "@thi.ng/rstream": "^5.0.9", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/rstream": "^5.0.10", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/rstream-graph/CHANGELOG.md b/packages/rstream-graph/CHANGELOG.md index 364c875202..2af3beaf2a 100644 --- a/packages/rstream-graph/CHANGELOG.md +++ b/packages/rstream-graph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.2.46](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@3.2.45...@thi.ng/rstream-graph@3.2.46) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rstream-graph + + + + + ## [3.2.45](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@3.2.44...@thi.ng/rstream-graph@3.2.45) (2020-11-26) **Note:** Version bump only for package @thi.ng/rstream-graph diff --git a/packages/rstream-graph/package.json b/packages/rstream-graph/package.json index e026f00666..780ea51bb3 100644 --- a/packages/rstream-graph/package.json +++ b/packages/rstream-graph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-graph", - "version": "3.2.45", + "version": "3.2.46", "description": "Declarative dataflow graph construction for @thi.ng/rstream", "module": "./index.js", "main": "./lib/index.js", @@ -49,14 +49,14 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/atom": "^4.1.23", + "@thi.ng/api": "^6.13.4", + "@thi.ng/atom": "^4.1.24", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/paths": "^4.1.9", - "@thi.ng/resolve-map": "^4.2.8", - "@thi.ng/rstream": "^5.0.9", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/paths": "^4.1.10", + "@thi.ng/resolve-map": "^4.2.9", + "@thi.ng/rstream": "^5.0.10", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/rstream-log-file/CHANGELOG.md b/packages/rstream-log-file/CHANGELOG.md index 938ccd2954..d249a75660 100644 --- a/packages/rstream-log-file/CHANGELOG.md +++ b/packages/rstream-log-file/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.67](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log-file@0.1.66...@thi.ng/rstream-log-file@0.1.67) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rstream-log-file + + + + + ## [0.1.66](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log-file@0.1.65...@thi.ng/rstream-log-file@0.1.66) (2020-11-26) **Note:** Version bump only for package @thi.ng/rstream-log-file diff --git a/packages/rstream-log-file/package.json b/packages/rstream-log-file/package.json index 4ef2501e7a..4c7d5736a8 100644 --- a/packages/rstream-log-file/package.json +++ b/packages/rstream-log-file/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-log-file", - "version": "0.1.66", + "version": "0.1.67", "description": "File output handler for structured, multilevel & hierarchical loggers based on @thi.ng/rstream", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/rstream": "^5.0.9" + "@thi.ng/rstream": "^5.0.10" }, "files": [ "*.js", diff --git a/packages/rstream-log/CHANGELOG.md b/packages/rstream-log/CHANGELOG.md index 8c0f7f3c6c..cbedcfcc88 100644 --- a/packages/rstream-log/CHANGELOG.md +++ b/packages/rstream-log/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.1.52](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@3.1.51...@thi.ng/rstream-log@3.1.52) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rstream-log + + + + + ## [3.1.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@3.1.50...@thi.ng/rstream-log@3.1.51) (2020-11-26) **Note:** Version bump only for package @thi.ng/rstream-log diff --git a/packages/rstream-log/package.json b/packages/rstream-log/package.json index f107a5d089..0bfd326f28 100644 --- a/packages/rstream-log/package.json +++ b/packages/rstream-log/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-log", - "version": "3.1.51", + "version": "3.1.52", "description": "Structured, multilevel & hierarchical loggers based on @thi.ng/rstream", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/rstream": "^5.0.9", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/rstream": "^5.0.10", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/rstream-query/CHANGELOG.md b/packages/rstream-query/CHANGELOG.md index cb03d86caf..05648aff0a 100644 --- a/packages/rstream-query/CHANGELOG.md +++ b/packages/rstream-query/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.52](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@1.1.51...@thi.ng/rstream-query@1.1.52) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rstream-query + + + + + ## [1.1.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@1.1.50...@thi.ng/rstream-query@1.1.51) (2020-11-26) **Note:** Version bump only for package @thi.ng/rstream-query diff --git a/packages/rstream-query/package.json b/packages/rstream-query/package.json index 6508100f83..2888985f24 100644 --- a/packages/rstream-query/package.json +++ b/packages/rstream-query/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-query", - "version": "1.1.51", + "version": "1.1.52", "description": "@thi.ng/rstream based triple store & reactive query engine", "module": "./index.js", "main": "./lib/index.js", @@ -49,15 +49,15 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/associative": "^5.0.10", + "@thi.ng/api": "^6.13.4", + "@thi.ng/associative": "^5.0.11", "@thi.ng/checks": "^2.7.11", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/math": "^2.2.1", - "@thi.ng/rstream": "^5.0.9", - "@thi.ng/rstream-dot": "^1.1.51", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/rstream": "^5.0.10", + "@thi.ng/rstream-dot": "^1.1.52", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/rstream/CHANGELOG.md b/packages/rstream/CHANGELOG.md index 0a7145727b..2d13784721 100644 --- a/packages/rstream/CHANGELOG.md +++ b/packages/rstream/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.0.10](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@5.0.9...@thi.ng/rstream@5.0.10) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/rstream + + + + + ## [5.0.9](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@5.0.8...@thi.ng/rstream@5.0.9) (2020-11-26) **Note:** Version bump only for package @thi.ng/rstream diff --git a/packages/rstream/package.json b/packages/rstream/package.json index f0c8f7a5c3..024e03636d 100644 --- a/packages/rstream/package.json +++ b/packages/rstream/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream", - "version": "5.0.9", + "version": "5.0.10", "description": "Reactive streams & subscription primitives for constructing dataflow graphs / pipelines", "module": "./index.js", "main": "./lib/index.js", @@ -49,13 +49,13 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", - "@thi.ng/associative": "^5.0.10", - "@thi.ng/atom": "^4.1.23", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", + "@thi.ng/associative": "^5.0.11", + "@thi.ng/atom": "^4.1.24", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/sax/CHANGELOG.md b/packages/sax/CHANGELOG.md index ae8c33f558..cbcbbad5e3 100644 --- a/packages/sax/CHANGELOG.md +++ b/packages/sax/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.42](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@1.1.41...@thi.ng/sax@1.1.42) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/sax + + + + + ## [1.1.41](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@1.1.40...@thi.ng/sax@1.1.41) (2020-11-26) **Note:** Version bump only for package @thi.ng/sax diff --git a/packages/sax/package.json b/packages/sax/package.json index 6afd31460b..0b58c1874c 100644 --- a/packages/sax/package.json +++ b/packages/sax/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/sax", - "version": "1.1.41", + "version": "1.1.42", "description": "Transducer-based, SAX-like, non-validating, speedy & tiny XML parser", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/transducers-fsm": "^1.1.41" + "@thi.ng/api": "^6.13.4", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/transducers-fsm": "^1.1.42" }, "files": [ "*.js", diff --git a/packages/scenegraph/CHANGELOG.md b/packages/scenegraph/CHANGELOG.md index 2b91fa251d..513cf34736 100644 --- a/packages/scenegraph/CHANGELOG.md +++ b/packages/scenegraph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.3.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/scenegraph@0.3.10...@thi.ng/scenegraph@0.3.11) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/scenegraph + + + + + ## [0.3.10](https://github.com/thi-ng/umbrella/compare/@thi.ng/scenegraph@0.3.9...@thi.ng/scenegraph@0.3.10) (2020-11-26) **Note:** Version bump only for package @thi.ng/scenegraph diff --git a/packages/scenegraph/package.json b/packages/scenegraph/package.json index cd97316241..9761e6f86b 100644 --- a/packages/scenegraph/package.json +++ b/packages/scenegraph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/scenegraph", - "version": "0.3.10", + "version": "0.3.11", "description": "Extensible 2D/3D scene graph with @thi.ng/hiccup-canvas support", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/matrices": "^0.6.36", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/matrices": "^0.6.37", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/seq/CHANGELOG.md b/packages/seq/CHANGELOG.md index ae61b4ff91..19fb77e51f 100644 --- a/packages/seq/CHANGELOG.md +++ b/packages/seq/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.27](https://github.com/thi-ng/umbrella/compare/@thi.ng/seq@0.2.26...@thi.ng/seq@0.2.27) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/seq + + + + + ## [0.2.26](https://github.com/thi-ng/umbrella/compare/@thi.ng/seq@0.2.25...@thi.ng/seq@0.2.26) (2020-11-26) **Note:** Version bump only for package @thi.ng/seq diff --git a/packages/seq/package.json b/packages/seq/package.json index 4b0f4e4f4e..c44164370f 100644 --- a/packages/seq/package.json +++ b/packages/seq/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/seq", - "version": "0.2.26", + "version": "0.2.27", "description": "Various implementations of the @thi.ng/api `ISeq` interface / sequence abstraction", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11" }, "files": [ diff --git a/packages/sexpr/CHANGELOG.md b/packages/sexpr/CHANGELOG.md index 7e5b910fa0..53e89e83af 100644 --- a/packages/sexpr/CHANGELOG.md +++ b/packages/sexpr/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.30](https://github.com/thi-ng/umbrella/compare/@thi.ng/sexpr@0.2.29...@thi.ng/sexpr@0.2.30) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/sexpr + + + + + ## [0.2.29](https://github.com/thi-ng/umbrella/compare/@thi.ng/sexpr@0.2.28...@thi.ng/sexpr@0.2.29) (2020-11-26) **Note:** Version bump only for package @thi.ng/sexpr diff --git a/packages/sexpr/package.json b/packages/sexpr/package.json index 3dad2e8dfe..b373684eaa 100644 --- a/packages/sexpr/package.json +++ b/packages/sexpr/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/sexpr", - "version": "0.2.29", + "version": "0.2.30", "description": "Extensible S-Expression parser & runtime infrastructure", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/defmulti": "^1.3.1" + "@thi.ng/defmulti": "^1.3.2" }, "files": [ "*.js", diff --git a/packages/shader-ast-glsl/CHANGELOG.md b/packages/shader-ast-glsl/CHANGELOG.md index 6fa7376651..90a149882d 100644 --- a/packages/shader-ast-glsl/CHANGELOG.md +++ b/packages/shader-ast-glsl/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.14](https://github.com/thi-ng/umbrella/compare/@thi.ng/shader-ast-glsl@0.2.13...@thi.ng/shader-ast-glsl@0.2.14) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/shader-ast-glsl + + + + + ## [0.2.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/shader-ast-glsl@0.2.12...@thi.ng/shader-ast-glsl@0.2.13) (2020-11-26) **Note:** Version bump only for package @thi.ng/shader-ast-glsl diff --git a/packages/shader-ast-glsl/package.json b/packages/shader-ast-glsl/package.json index 46501cac0c..2f0a7aeae0 100644 --- a/packages/shader-ast-glsl/package.json +++ b/packages/shader-ast-glsl/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/shader-ast-glsl", - "version": "0.2.13", + "version": "0.2.14", "description": "Customizable GLSL codegen for @thi.ng/shader-ast", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/shader-ast": "^0.7.5" + "@thi.ng/shader-ast": "^0.7.6" }, "files": [ "*.js", diff --git a/packages/shader-ast-js/CHANGELOG.md b/packages/shader-ast-js/CHANGELOG.md index 8e483fac4c..a4a87958d2 100644 --- a/packages/shader-ast-js/CHANGELOG.md +++ b/packages/shader-ast-js/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.5.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/shader-ast-js@0.5.11...@thi.ng/shader-ast-js@0.5.12) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/shader-ast-js + + + + + ## [0.5.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/shader-ast-js@0.5.10...@thi.ng/shader-ast-js@0.5.11) (2020-11-26) **Note:** Version bump only for package @thi.ng/shader-ast-js diff --git a/packages/shader-ast-js/package.json b/packages/shader-ast-js/package.json index d46cdb4cdf..a96d08d44a 100644 --- a/packages/shader-ast-js/package.json +++ b/packages/shader-ast-js/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/shader-ast-js", - "version": "0.5.11", + "version": "0.5.12", "description": "Customizable JS codegen, compiler & runtime for @thi.ng/shader-ast", "module": "./index.js", "main": "./lib/index.js", @@ -49,14 +49,14 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/math": "^2.2.1", - "@thi.ng/matrices": "^0.6.36", - "@thi.ng/pixel": "^0.4.8", - "@thi.ng/shader-ast": "^0.7.5", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/matrices": "^0.6.37", + "@thi.ng/pixel": "^0.4.9", + "@thi.ng/shader-ast": "^0.7.6", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/shader-ast-stdlib/CHANGELOG.md b/packages/shader-ast-stdlib/CHANGELOG.md index e85ede9183..f4c78843cc 100644 --- a/packages/shader-ast-stdlib/CHANGELOG.md +++ b/packages/shader-ast-stdlib/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.5.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/shader-ast-stdlib@0.5.5...@thi.ng/shader-ast-stdlib@0.5.6) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/shader-ast-stdlib + + + + + ## [0.5.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/shader-ast-stdlib@0.5.4...@thi.ng/shader-ast-stdlib@0.5.5) (2020-11-26) **Note:** Version bump only for package @thi.ng/shader-ast-stdlib diff --git a/packages/shader-ast-stdlib/package.json b/packages/shader-ast-stdlib/package.json index 538509f4bd..8df7d287b0 100644 --- a/packages/shader-ast-stdlib/package.json +++ b/packages/shader-ast-stdlib/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/shader-ast-stdlib", - "version": "0.5.5", + "version": "0.5.6", "description": "Function collection for modular GPGPU / shader programming with @thi.ng/shader-ast", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/shader-ast": "^0.7.5" + "@thi.ng/api": "^6.13.4", + "@thi.ng/shader-ast": "^0.7.6" }, "files": [ "*.js", diff --git a/packages/shader-ast/CHANGELOG.md b/packages/shader-ast/CHANGELOG.md index e88dc522d8..47d647c59a 100644 --- a/packages/shader-ast/CHANGELOG.md +++ b/packages/shader-ast/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.7.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/shader-ast@0.7.5...@thi.ng/shader-ast@0.7.6) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/shader-ast + + + + + ## [0.7.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/shader-ast@0.7.4...@thi.ng/shader-ast@0.7.5) (2020-11-26) **Note:** Version bump only for package @thi.ng/shader-ast diff --git a/packages/shader-ast/package.json b/packages/shader-ast/package.json index dd63e342b3..8815fed5ad 100644 --- a/packages/shader-ast/package.json +++ b/packages/shader-ast/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/shader-ast", - "version": "0.7.5", + "version": "0.7.6", "description": "DSL to define shader code in TypeScript and cross-compile to GLSL, JS and other targets", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/defmulti": "^1.3.1", - "@thi.ng/dgraph": "^1.3.1", + "@thi.ng/defmulti": "^1.3.2", + "@thi.ng/dgraph": "^1.3.2", "@thi.ng/errors": "^1.2.24" }, "files": [ diff --git a/packages/simd/CHANGELOG.md b/packages/simd/CHANGELOG.md index 95cc0ad7e6..ce1cd832d6 100644 --- a/packages/simd/CHANGELOG.md +++ b/packages/simd/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.4.10](https://github.com/thi-ng/umbrella/compare/@thi.ng/simd@0.4.9...@thi.ng/simd@0.4.10) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/simd + + + + + ## [0.4.9](https://github.com/thi-ng/umbrella/compare/@thi.ng/simd@0.4.8...@thi.ng/simd@0.4.9) (2020-11-26) **Note:** Version bump only for package @thi.ng/simd diff --git a/packages/simd/package.json b/packages/simd/package.json index 8b8ceef1ec..fb5f68ba8b 100644 --- a/packages/simd/package.json +++ b/packages/simd/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/simd", - "version": "0.4.9", + "version": "0.4.10", "description": "WASM based SIMD vector operations for batch processing", "module": "./index.js", "main": "./lib/index.js", @@ -52,7 +52,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/transducers-binary": "^0.5.32" + "@thi.ng/transducers-binary": "^0.5.33" }, "files": [ "*.js", diff --git a/packages/soa/CHANGELOG.md b/packages/soa/CHANGELOG.md index d005b9142a..e3ca785483 100644 --- a/packages/soa/CHANGELOG.md +++ b/packages/soa/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.41](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.1.40...@thi.ng/soa@0.1.41) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/soa + + + + + ## [0.1.40](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.1.39...@thi.ng/soa@0.1.40) (2020-11-26) **Note:** Version bump only for package @thi.ng/soa diff --git a/packages/soa/package.json b/packages/soa/package.json index c94b7af630..806c622891 100644 --- a/packages/soa/package.json +++ b/packages/soa/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/soa", - "version": "0.1.40", + "version": "0.1.41", "description": "SOA & AOS memory mapped structured views with optional & extensible serialization", "module": "./index.js", "main": "./lib/index.js", @@ -50,10 +50,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", - "@thi.ng/transducers-binary": "^0.5.32", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", + "@thi.ng/transducers-binary": "^0.5.33", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/sparse/CHANGELOG.md b/packages/sparse/CHANGELOG.md index dfdf53e96a..4994f9189a 100644 --- a/packages/sparse/CHANGELOG.md +++ b/packages/sparse/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.58](https://github.com/thi-ng/umbrella/compare/@thi.ng/sparse@0.1.57...@thi.ng/sparse@0.1.58) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/sparse + + + + + ## [0.1.57](https://github.com/thi-ng/umbrella/compare/@thi.ng/sparse@0.1.56...@thi.ng/sparse@0.1.57) (2020-11-26) **Note:** Version bump only for package @thi.ng/sparse diff --git a/packages/sparse/package.json b/packages/sparse/package.json index 93084a27fb..deb924f912 100644 --- a/packages/sparse/package.json +++ b/packages/sparse/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/sparse", - "version": "0.1.57", + "version": "0.1.58", "description": "Sparse vector & matrix implementations", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/strings/CHANGELOG.md b/packages/strings/CHANGELOG.md index 255ea0e41f..6b9482f8ef 100644 --- a/packages/strings/CHANGELOG.md +++ b/packages/strings/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.11.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.11.1...@thi.ng/strings@1.11.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/strings + + + + + ## [1.11.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@1.11.0...@thi.ng/strings@1.11.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/strings diff --git a/packages/strings/package.json b/packages/strings/package.json index 72e6d2758e..c76d1923aa 100644 --- a/packages/strings/package.json +++ b/packages/strings/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/strings", - "version": "1.11.1", + "version": "1.11.2", "description": "Various string formatting & utility functions", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/errors": "^1.2.24", "@thi.ng/hex": "^0.1.1", - "@thi.ng/memoize": "^2.1.5" + "@thi.ng/memoize": "^2.1.6" }, "files": [ "*.js", diff --git a/packages/system/CHANGELOG.md b/packages/system/CHANGELOG.md index 4d4a689e5b..a8af5dbba2 100644 --- a/packages/system/CHANGELOG.md +++ b/packages/system/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.31](https://github.com/thi-ng/umbrella/compare/@thi.ng/system@0.2.30...@thi.ng/system@0.2.31) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/system + + + + + ## [0.2.30](https://github.com/thi-ng/umbrella/compare/@thi.ng/system@0.2.29...@thi.ng/system@0.2.30) (2020-11-26) **Note:** Version bump only for package @thi.ng/system diff --git a/packages/system/package.json b/packages/system/package.json index b79ec61c39..5df43d82f6 100644 --- a/packages/system/package.json +++ b/packages/system/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/system", - "version": "0.2.30", + "version": "0.2.31", "description": "Minimal DI / life cycle container for stateful app components", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/dgraph": "^1.3.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/dgraph": "^1.3.2" }, "files": [ "*.js", diff --git a/packages/text-canvas/CHANGELOG.md b/packages/text-canvas/CHANGELOG.md index cc98e402bc..2c6151f2c0 100644 --- a/packages/text-canvas/CHANGELOG.md +++ b/packages/text-canvas/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/text-canvas@0.2.34...@thi.ng/text-canvas@0.2.35) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/text-canvas + + + + + ## [0.2.34](https://github.com/thi-ng/umbrella/compare/@thi.ng/text-canvas@0.2.33...@thi.ng/text-canvas@0.2.34) (2020-11-26) **Note:** Version bump only for package @thi.ng/text-canvas diff --git a/packages/text-canvas/package.json b/packages/text-canvas/package.json index 55cf5730de..6d4287bc71 100644 --- a/packages/text-canvas/package.json +++ b/packages/text-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/text-canvas", - "version": "0.2.34", + "version": "0.2.35", "description": "Text based canvas, drawing, tables with arbitrary formatting (incl. ANSI/HTML)", "module": "./index.js", "main": "./lib/index.js", @@ -49,14 +49,14 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/geom-clip-line": "^1.2.12", - "@thi.ng/math": "^2.2.1", - "@thi.ng/memoize": "^2.1.5", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/geom-clip-line": "^1.2.13", + "@thi.ng/math": "^2.2.2", + "@thi.ng/memoize": "^2.1.6", + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/transducers-binary/CHANGELOG.md b/packages/transducers-binary/CHANGELOG.md index 36404ab692..494c107b26 100644 --- a/packages/transducers-binary/CHANGELOG.md +++ b/packages/transducers-binary/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.5.33](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-binary@0.5.32...@thi.ng/transducers-binary@0.5.33) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/transducers-binary + + + + + ## [0.5.32](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-binary@0.5.31...@thi.ng/transducers-binary@0.5.32) (2020-11-26) **Note:** Version bump only for package @thi.ng/transducers-binary diff --git a/packages/transducers-binary/package.json b/packages/transducers-binary/package.json index f8e94853cd..e940eba412 100644 --- a/packages/transducers-binary/package.json +++ b/packages/transducers-binary/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-binary", - "version": "0.5.32", + "version": "0.5.33", "description": "Binary data related transducers & reducers", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/binary": "^2.0.18", - "@thi.ng/compose": "^1.4.20", + "@thi.ng/binary": "^2.0.19", + "@thi.ng/compose": "^1.4.21", "@thi.ng/errors": "^1.2.24", "@thi.ng/hex": "^0.1.1", - "@thi.ng/random": "^2.1.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/random": "^2.1.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/transducers-fsm/CHANGELOG.md b/packages/transducers-fsm/CHANGELOG.md index ab76a9c5d5..302be0ac9d 100644 --- a/packages/transducers-fsm/CHANGELOG.md +++ b/packages/transducers-fsm/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.42](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@1.1.41...@thi.ng/transducers-fsm@1.1.42) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/transducers-fsm + + + + + ## [1.1.41](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@1.1.40...@thi.ng/transducers-fsm@1.1.41) (2020-11-26) **Note:** Version bump only for package @thi.ng/transducers-fsm diff --git a/packages/transducers-fsm/package.json b/packages/transducers-fsm/package.json index dd1ba6308a..a6381ac488 100644 --- a/packages/transducers-fsm/package.json +++ b/packages/transducers-fsm/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-fsm", - "version": "1.1.41", + "version": "1.1.42", "description": "Transducer-based Finite State Machine transformer", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/api": "^6.13.4", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/transducers-hdom/CHANGELOG.md b/packages/transducers-hdom/CHANGELOG.md index 819de4f908..11ff31c0a8 100644 --- a/packages/transducers-hdom/CHANGELOG.md +++ b/packages/transducers-hdom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.74](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@2.0.73...@thi.ng/transducers-hdom@2.0.74) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/transducers-hdom + + + + + ## [2.0.73](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@2.0.72...@thi.ng/transducers-hdom@2.0.73) (2020-11-26) **Note:** Version bump only for package @thi.ng/transducers-hdom diff --git a/packages/transducers-hdom/package.json b/packages/transducers-hdom/package.json index eef95f4552..8585a63d5d 100644 --- a/packages/transducers-hdom/package.json +++ b/packages/transducers-hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-hdom", - "version": "2.0.73", + "version": "2.0.74", "description": "Transducer based UI updater for @thi.ng/hdom", "module": "./index.js", "main": "./lib/index.js", @@ -49,9 +49,9 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/hdom": "^8.2.12", - "@thi.ng/hiccup": "^3.6.3", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/hdom": "^8.2.13", + "@thi.ng/hiccup": "^3.6.4", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/transducers-patch/CHANGELOG.md b/packages/transducers-patch/CHANGELOG.md index 353d1f16aa..52ff627d9a 100644 --- a/packages/transducers-patch/CHANGELOG.md +++ b/packages/transducers-patch/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.33](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-patch@0.1.32...@thi.ng/transducers-patch@0.1.33) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/transducers-patch + + + + + ## [0.1.32](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-patch@0.1.31...@thi.ng/transducers-patch@0.1.32) (2020-11-26) **Note:** Version bump only for package @thi.ng/transducers-patch diff --git a/packages/transducers-patch/package.json b/packages/transducers-patch/package.json index ac7c9790e9..f90a6997c5 100644 --- a/packages/transducers-patch/package.json +++ b/packages/transducers-patch/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-patch", - "version": "0.1.32", + "version": "0.1.33", "description": "Reducers for patch-based, immutable-by-default array & object editing", "module": "./index.js", "main": "./lib/index.js", @@ -49,11 +49,11 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", + "@thi.ng/api": "^6.13.4", "@thi.ng/checks": "^2.7.11", "@thi.ng/errors": "^1.2.24", - "@thi.ng/paths": "^4.1.9", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/paths": "^4.1.10", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/transducers-stats/CHANGELOG.md b/packages/transducers-stats/CHANGELOG.md index 92a41f6de6..9a9d115449 100644 --- a/packages/transducers-stats/CHANGELOG.md +++ b/packages/transducers-stats/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.43](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@1.1.42...@thi.ng/transducers-stats@1.1.43) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/transducers-stats + + + + + ## [1.1.42](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@1.1.41...@thi.ng/transducers-stats@1.1.42) (2020-11-26) **Note:** Version bump only for package @thi.ng/transducers-stats diff --git a/packages/transducers-stats/package.json b/packages/transducers-stats/package.json index 6dbb0933f4..71a476e041 100644 --- a/packages/transducers-stats/package.json +++ b/packages/transducers-stats/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-stats", - "version": "1.1.42", + "version": "1.1.43", "description": "Transducers for statistical / technical analysis", "module": "./index.js", "main": "./lib/index.js", @@ -50,9 +50,9 @@ }, "dependencies": { "@thi.ng/checks": "^2.7.11", - "@thi.ng/dcons": "^2.3.2", + "@thi.ng/dcons": "^2.3.3", "@thi.ng/errors": "^1.2.24", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/transducers/CHANGELOG.md b/packages/transducers/CHANGELOG.md index 2350af7faf..0a97d70e65 100644 --- a/packages/transducers/CHANGELOG.md +++ b/packages/transducers/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [7.5.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@7.5.1...@thi.ng/transducers@7.5.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/transducers + + + + + ## [7.5.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@7.5.0...@thi.ng/transducers@7.5.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/transducers diff --git a/packages/transducers/package.json b/packages/transducers/package.json index 50f59eb918..73d53ba697 100644 --- a/packages/transducers/package.json +++ b/packages/transducers/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers", - "version": "7.5.1", + "version": "7.5.2", "description": "Lightweight transducer implementations for ES6 / TypeScript", "module": "./index.js", "main": "./lib/index.js", @@ -49,14 +49,14 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/checks": "^2.7.11", - "@thi.ng/compare": "^1.3.19", - "@thi.ng/compose": "^1.4.20", + "@thi.ng/compare": "^1.3.20", + "@thi.ng/compose": "^1.4.21", "@thi.ng/errors": "^1.2.24", - "@thi.ng/math": "^2.2.1", - "@thi.ng/random": "^2.1.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/random": "^2.1.2" }, "files": [ "*.js", diff --git a/packages/vclock/CHANGELOG.md b/packages/vclock/CHANGELOG.md index d47f51dc9f..bb25d017b0 100644 --- a/packages/vclock/CHANGELOG.md +++ b/packages/vclock/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/vclock@0.1.0...@thi.ng/vclock@0.1.1) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/vclock + + + + + # 0.1.0 (2020-11-26) diff --git a/packages/vclock/package.json b/packages/vclock/package.json index 6939ae451d..e8605d970f 100644 --- a/packages/vclock/package.json +++ b/packages/vclock/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/vclock", - "version": "0.1.0", + "version": "0.1.1", "description": "Vector clock functions for synchronizing distributed states & processes", "module": "./index.js", "main": "./lib/index.js", @@ -49,7 +49,7 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3" + "@thi.ng/api": "^6.13.4" }, "files": [ "*.js", diff --git a/packages/vector-pools/CHANGELOG.md b/packages/vector-pools/CHANGELOG.md index 3185e319ca..fc84e1377f 100644 --- a/packages/vector-pools/CHANGELOG.md +++ b/packages/vector-pools/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/vector-pools@1.0.50...@thi.ng/vector-pools@1.0.51) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/vector-pools + + + + + ## [1.0.50](https://github.com/thi-ng/umbrella/compare/@thi.ng/vector-pools@1.0.49...@thi.ng/vector-pools@1.0.50) (2020-11-26) **Note:** Version bump only for package @thi.ng/vector-pools diff --git a/packages/vector-pools/package.json b/packages/vector-pools/package.json index 9f5ed5032f..66518227aa 100644 --- a/packages/vector-pools/package.json +++ b/packages/vector-pools/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/vector-pools", - "version": "1.0.50", + "version": "1.0.51", "description": "Data structures for managing & working with strided, memory mapped vectors", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", "@thi.ng/checks": "^2.7.11", - "@thi.ng/malloc": "^4.2.2", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/malloc": "^4.2.3", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/vectors/CHANGELOG.md b/packages/vectors/CHANGELOG.md index 343b59d619..752205bfae 100644 --- a/packages/vectors/CHANGELOG.md +++ b/packages/vectors/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.8.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@4.8.1...@thi.ng/vectors@4.8.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/vectors + + + + + ## [4.8.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@4.8.0...@thi.ng/vectors@4.8.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/vectors diff --git a/packages/vectors/package.json b/packages/vectors/package.json index d3f3086206..e2b66fec4a 100644 --- a/packages/vectors/package.json +++ b/packages/vectors/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/vectors", - "version": "4.8.1", + "version": "4.8.2", "description": "Optimized 2d/3d/4d and arbitrary length vector operations", "module": "./index.js", "main": "./lib/index.js", @@ -49,15 +49,15 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/binary": "^2.0.18", + "@thi.ng/api": "^6.13.4", + "@thi.ng/binary": "^2.0.19", "@thi.ng/checks": "^2.7.11", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/math": "^2.2.1", - "@thi.ng/memoize": "^2.1.5", - "@thi.ng/random": "^2.1.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/memoize": "^2.1.6", + "@thi.ng/random": "^2.1.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/viz/CHANGELOG.md b/packages/viz/CHANGELOG.md index 9946837960..fabe17bdc0 100644 --- a/packages/viz/CHANGELOG.md +++ b/packages/viz/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/viz@0.2.1...@thi.ng/viz@0.2.2) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/viz + + + + + ## [0.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/viz@0.2.0...@thi.ng/viz@0.2.1) (2020-11-26) **Note:** Version bump only for package @thi.ng/viz diff --git a/packages/viz/package.json b/packages/viz/package.json index e861025404..5c76891a1a 100644 --- a/packages/viz/package.json +++ b/packages/viz/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/viz", - "version": "0.2.1", + "version": "0.2.2", "description": "Declarative, functional & multi-format data visualization toolkit based around @thi.ng/hiccup", "module": "./index.js", "main": "./lib/index.js", @@ -46,7 +46,7 @@ "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", "@microsoft/api-extractor": "^7.12.0", - "@thi.ng/date": "^0.2.2", + "@thi.ng/date": "^0.2.3", "@types/mocha": "^8.0.3", "@types/node": "^14.6.1", "mocha": "^8.2.1", @@ -56,13 +56,13 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", - "@thi.ng/associative": "^5.0.10", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", + "@thi.ng/associative": "^5.0.11", "@thi.ng/checks": "^2.7.11", - "@thi.ng/math": "^2.2.1", - "@thi.ng/strings": "^1.11.1", - "@thi.ng/transducers": "^7.5.1" + "@thi.ng/math": "^2.2.2", + "@thi.ng/strings": "^1.11.2", + "@thi.ng/transducers": "^7.5.2" }, "files": [ "*.js", diff --git a/packages/webgl-msdf/CHANGELOG.md b/packages/webgl-msdf/CHANGELOG.md index 1af4507f01..5c3ed944d4 100644 --- a/packages/webgl-msdf/CHANGELOG.md +++ b/packages/webgl-msdf/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.65](https://github.com/thi-ng/umbrella/compare/@thi.ng/webgl-msdf@0.1.64...@thi.ng/webgl-msdf@0.1.65) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/webgl-msdf + + + + + ## [0.1.64](https://github.com/thi-ng/umbrella/compare/@thi.ng/webgl-msdf@0.1.63...@thi.ng/webgl-msdf@0.1.64) (2020-11-26) **Note:** Version bump only for package @thi.ng/webgl-msdf diff --git a/packages/webgl-msdf/package.json b/packages/webgl-msdf/package.json index d4ceb2153b..4a852276b1 100644 --- a/packages/webgl-msdf/package.json +++ b/packages/webgl-msdf/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/webgl-msdf", - "version": "0.1.64", + "version": "0.1.65", "description": "Multi-channel SDF font rendering & basic text layout for WebGL", "module": "./index.js", "main": "./lib/index.js", @@ -49,12 +49,12 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/shader-ast": "^0.7.5", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vector-pools": "^1.0.50", - "@thi.ng/vectors": "^4.8.1", - "@thi.ng/webgl": "^3.3.7" + "@thi.ng/api": "^6.13.4", + "@thi.ng/shader-ast": "^0.7.6", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vector-pools": "^1.0.51", + "@thi.ng/vectors": "^4.8.2", + "@thi.ng/webgl": "^3.3.8" }, "files": [ "*.js", diff --git a/packages/webgl-shadertoy/CHANGELOG.md b/packages/webgl-shadertoy/CHANGELOG.md index 9a99bf6099..66b0e51bdd 100644 --- a/packages/webgl-shadertoy/CHANGELOG.md +++ b/packages/webgl-shadertoy/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.52](https://github.com/thi-ng/umbrella/compare/@thi.ng/webgl-shadertoy@0.2.51...@thi.ng/webgl-shadertoy@0.2.52) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/webgl-shadertoy + + + + + ## [0.2.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/webgl-shadertoy@0.2.50...@thi.ng/webgl-shadertoy@0.2.51) (2020-11-26) **Note:** Version bump only for package @thi.ng/webgl-shadertoy diff --git a/packages/webgl-shadertoy/package.json b/packages/webgl-shadertoy/package.json index 19fe5eb6be..518e58289c 100644 --- a/packages/webgl-shadertoy/package.json +++ b/packages/webgl-shadertoy/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/webgl-shadertoy", - "version": "0.2.51", + "version": "0.2.52", "description": "Basic WebGL scaffolding for running interactive fragment shaders via @thi.ng/shader-ast", "module": "./index.js", "main": "./lib/index.js", @@ -49,10 +49,10 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/shader-ast": "^0.7.5", - "@thi.ng/shader-ast-glsl": "^0.2.13", - "@thi.ng/webgl": "^3.3.7" + "@thi.ng/api": "^6.13.4", + "@thi.ng/shader-ast": "^0.7.6", + "@thi.ng/shader-ast-glsl": "^0.2.14", + "@thi.ng/webgl": "^3.3.8" }, "files": [ "*.js", diff --git a/packages/webgl/CHANGELOG.md b/packages/webgl/CHANGELOG.md index 50723e1b16..f219269f7f 100644 --- a/packages/webgl/CHANGELOG.md +++ b/packages/webgl/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.3.8](https://github.com/thi-ng/umbrella/compare/@thi.ng/webgl@3.3.7...@thi.ng/webgl@3.3.8) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/webgl + + + + + ## [3.3.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/webgl@3.3.6...@thi.ng/webgl@3.3.7) (2020-11-26) **Note:** Version bump only for package @thi.ng/webgl diff --git a/packages/webgl/package.json b/packages/webgl/package.json index eb7bb9d904..ff188a614d 100644 --- a/packages/webgl/package.json +++ b/packages/webgl/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/webgl", - "version": "3.3.7", + "version": "3.3.8", "description": "WebGL & GLSL abstraction layer", "module": "./index.js", "main": "./lib/index.js", @@ -50,20 +50,20 @@ }, "dependencies": { "@thi.ng/adapt-dpi": "^1.0.11", - "@thi.ng/api": "^6.13.3", - "@thi.ng/associative": "^5.0.10", + "@thi.ng/api": "^6.13.4", + "@thi.ng/associative": "^5.0.11", "@thi.ng/checks": "^2.7.11", "@thi.ng/equiv": "^1.0.33", "@thi.ng/errors": "^1.2.24", - "@thi.ng/matrices": "^0.6.36", - "@thi.ng/memoize": "^2.1.5", - "@thi.ng/pixel": "^0.4.8", - "@thi.ng/shader-ast": "^0.7.5", - "@thi.ng/shader-ast-glsl": "^0.2.13", - "@thi.ng/shader-ast-stdlib": "^0.5.5", - "@thi.ng/transducers": "^7.5.1", - "@thi.ng/vector-pools": "^1.0.50", - "@thi.ng/vectors": "^4.8.1" + "@thi.ng/matrices": "^0.6.37", + "@thi.ng/memoize": "^2.1.6", + "@thi.ng/pixel": "^0.4.9", + "@thi.ng/shader-ast": "^0.7.6", + "@thi.ng/shader-ast-glsl": "^0.2.14", + "@thi.ng/shader-ast-stdlib": "^0.5.6", + "@thi.ng/transducers": "^7.5.2", + "@thi.ng/vector-pools": "^1.0.51", + "@thi.ng/vectors": "^4.8.2" }, "files": [ "*.js", diff --git a/packages/zipper/CHANGELOG.md b/packages/zipper/CHANGELOG.md index 6bf401aada..0c6de3d323 100644 --- a/packages/zipper/CHANGELOG.md +++ b/packages/zipper/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.29](https://github.com/thi-ng/umbrella/compare/@thi.ng/zipper@0.1.28...@thi.ng/zipper@0.1.29) (2020-12-07) + +**Note:** Version bump only for package @thi.ng/zipper + + + + + ## [0.1.28](https://github.com/thi-ng/umbrella/compare/@thi.ng/zipper@0.1.27...@thi.ng/zipper@0.1.28) (2020-11-26) **Note:** Version bump only for package @thi.ng/zipper diff --git a/packages/zipper/package.json b/packages/zipper/package.json index e4e62c91e2..cc26d3d4b9 100644 --- a/packages/zipper/package.json +++ b/packages/zipper/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/zipper", - "version": "0.1.28", + "version": "0.1.29", "description": "Functional tree editing, manipulation & navigation", "module": "./index.js", "main": "./lib/index.js", @@ -49,8 +49,8 @@ "typescript": "^4.1.2" }, "dependencies": { - "@thi.ng/api": "^6.13.3", - "@thi.ng/arrays": "^0.8.3", + "@thi.ng/api": "^6.13.4", + "@thi.ng/arrays": "^0.8.4", "@thi.ng/checks": "^2.7.11" }, "files": [

>jVKKhgS%BQt^~_WOg5hv% zrzUHawri6ZYoJmXnn)pc1Ohrn2302<@8tIkveHR|;cTtMNYfwPlB~c|i`|uXdg7S) z=l(?2J$~BBxz4z zFkr&*t;N}v1y)lYeXXb&6GQ8UlR(Xv6(qLea)}<%K!-9yRs3@>B*d8#bEZ_r&RaKVIx)u;zi|cSPuxzu!z}vO6zSkj(he&>0{I*w zMv7<-bR9DP0HzMJMofV$_M4_^4=pugL)>sR2@H=d9MZD5>=ltlyG~x8o+kA?43OQ- zR%;iUIGAk|paVvs>x{;eKYe+}D!Zh)f>clz%;!UZvS}nGoyt~Qf#iwk1wFknq$v$q zTt?3)t=o+6s}Yq2*c$7X31@>+FOm? z>>Q+LH-2 zy%-=gQfW*!T7WX0tPos6=DSrvSEg%In(eK1Cp}1KTVAL~E)X|M} z>4kXm6lM8Fl3Mr(UBO-jU=Z*9LW9%P;$5t)LG%#VNMe&=7YUWcMx+r@xNDYba6oEZ zp%5+1JDfs)Y%$7|_QL*v#I7%HZ<1ot6lnWnKqz$w^AyFhg<&}fZigDu+)Pc}tOt=Z z0V$Y1p7=XaLS)YIn^Twi$s;1r6Sxe`3evbNEkUudelB}QdA^uUxp2a0qaP_N|MjNhn%C0w^>iA}V@dv>Icg3!7#L14$&tg#bHfMH#=A3Un+%X4{Or$E*tt2I( zkkrvo<_ROEDS)cQVl5l}DV{k5P{EXS%r2=X2w`07g-XKODRGLi ze&iugsR7)aw-HS}@aeXRX%}oc8=(-ko^a0`q_Z%o+nrDk%RD|d#d#a%c+q*nz2%qf z{W~F5sQpH)2Dq-3!~-mnh$iEphB(PtU%8&O&stYJx?pPwstVoMt^WW5v65@D>!D{OR@5o51 z<2otMl%ULLF|y%*=NtZT{cmZFsxrC9;@YL3J53EZXiW8?|YWQ;{^m`h6ahBrbBMN|)SM z64rMz{@e=g8fRuIyM}bGTGvbuq|iQT0_3c$IQ}AQ;))Uq3uOwW3%71SP|)tghh`$` z<~~Kt(r#lEjlDq2dgK97tudg_&1~E9?eDBqkykjcY$8Ht!e9w7FFagUe5LzV+uQWvh4&KcI)k2ZqQ9;Nq5)L z!^jJ(J7#$X? zB9cUjoF^|s_LejX_gbP&m#QY_a4Y$QomZN zWQldiQoHG&TprU#S%W730CQZjT-sj`8j_+tgJOUP8@qk5xN$>hcGyQZ63o(zn_R?u z1xgcL#QP6iIzW@Zwz#;WW)=q4dpQ|=fJnkh)}-suwQ%jCcIpt@@@rpIC{|(CR*1GkDJiC+JSy&?)IA2d#ig& z-Y{sbcdp=f3Kn2b>Ga1}@q|g}{Kt@nONp)isTfPNFOXD~rga~l1IK`^RHIL6$Xf^7 zBoQnS>@v(^Aj!03Bxa~J#&|+4>TKfE?t6jBJhLzng)vZ6w5?qQPSdvwtSC2UGEw0o zySuZz600MR?a%-yHLp$B=gWWaTVBN_lzl@Zv4((o8l4842|8n?Jg?Y|H~KzKULiQP zNmyHj0&3*MuAy`H#I)tm`9d&Vy~X0X%HrNOaYiPJrlD#&^rjhS*t!jLli56QO&F8v zGY>*igFOB?8u_Fu`m`+t-O>x0=2bxCt-H9}L6I~b_*SHBfw|;LBS~<+c2q|SRax1Y zsY)EO2BRA}8M!4b;yV*>Cg_$>MX92`+Eu8)pN1VIBa^F>BJL|-L7l*ww+dUBpP_<@JLNn?HcuAr9on8sm zUDy~aB?ZA0QlxZW)CEo%B+!un<(G|y7l!mak)T(7fC5AG08p{^t|zQd2F{M`xjRO5 zjyM=w#NlOEUm4oEe^qF6&kV8bZqj+m%)Fi1FuM^M49WojgY11U%`ODFCtSxO+IYhm zA&`Z2+IFe^HK7@gUwkW}qU>hU-D0-5ib%jT8+R$#S+b&v)A7LO!u<)ame%v>ri6#M z8%$^B%u`=nDnp?BY}cH1-14#pmZcdItxz)C>~Q^Kky|u8b&SIqM;U{C?FhqbHHyR-DiF0kb2&jD<>SnZNWo<{RbisO2PYE-E9 z{U;RgD^dd6g%CT&*h4LE2}`%B*r4uE za$2bMrZb`9gqm^TWwAz)1BqUPJ-dA{`Eccm)R8Akhmu&Pn37E-i!cf>pb^vc3g>~V zW=;`4?#=kiIb^!4NJ6Acxv3;(D0<+i7fFy|z52%u9aKg?c?qFx=}-l0gyorJp${h% zX+5AM`94C!YmL1(d;8#aietry@*I7cxTJ|tk<>6^LC;me#v4G^=DZ5e(7XOR_)QA$PqhC_maX!f6b9dn2IOTr_*ez-z!qbx}~ zDEJ{sZdy|e3S1zmsh~O2Dq_iyX!zLNJB_EuJLj`H0j6i6!9uYvM$Y*qK=Tg6Noq4E zrE!}XDJ<|eo;aDd6^&nO$m^IC^{$?n0B09h-%4bj&>59YP_W6rtEm|r7Q)Wb?&@fi z@@UQ`1f)zV3lmjiPnQi13;Gl>+{YndUmQSg3MwiNbs~nI_$|v4AlmT!jJMW_H2`Iz znhb~nl^+`6no>!W_Xs?pBFajb<|3PdxCMoE#I}aZ68``s z#2AsooWUfW1v(5#WT{y>OIyoDhsEPie|#y*sz@Xs_hR{e$>|E7JBgCv&8jz#XLLkT zj7E9kw5Nf4KPRba9Dv)##0c|fMr?mPO`?g4pSQl2Q*z7|39jFml>U-BVPXQ@gubx` zCAt6vBWR8F0OgUccnrt^CL$s-kfXPEL6@#sV5b0R6}|k+Ir5cdjAJT9UD%nwn)%K(uO~&lBdu1nxLo#pj=CjoCm=pn$+1;wgg0NUv{gX?bTL zbzme4%?Kb8%4oZ5^Jj!k!oXc$iz!hqw%f+E+r3Fbxo4$U4bh7uwx4nFa@jVaQL7S3leOK|fxV68otO6|Sq)b_>c7*cTo%BA+rn=7C}EXLN!la}{SBxu zrA=`tgjbVAVZ+{7Ng_!Q5K797k_~d{reoIuZ^4=>K@GRkT$WNKMmyByw=YdJ^uvi3 z4V7 zZ}{?q6!4M^ftR>4fzX_=xj|xFgGDT(DAw?T zBw_QGO$yUL)r}1UmIBh=#t9|5SWK~~)C!D--rl5VgJW4n%Y~k0OOz`Oj!iUdXvMSu zZT&R$!Rss?pzrBzIWA5avJe*uMEQt7Yq?H0Ut)HF&Rz=$p*Hh*0EC75sS=85+(3T6 zH9s6Tn-3^S`K7x@v9kqaF)}o|ZDkn+1J;-=!IpiQ%SmtKyPh{PMg1nRldKry8i$e%#9Vm+?(h?K|%)Msmlw( z3WJVP-YZLVX!h=z-JAnbHX4lo0Hm+ujS?f+EwJ)85#BaQB6y_S4`mc>Z~Y8PT$YrP zD))!JOTD)UWuat=;~=3MYOLReH#`Caj~%^y={$g!jZ%dC->#tgS6pn#k}XFpGKmS? zM*jdCuHjvMa?9b4i4?naJ;k@%@Y&iqOLjusV)1Lc(YV^QOk zbI1wJROa;t3{5xqmIp5Nz#^wWg@008-Cl6TzJ zmRy(H)5!yEp4>+0{zALh9n2UJoi)cl&C8P7;KD1$* z6q0-pWcz~j+I=z=M#+)EH2@t0SJT@Hj3yh9B<*E)T2&c zDKWvkH3FIwO=w1#eCS;$1<3I;{bW*G$bu9*r1BaZ^Q8{Gy)enhxk(>EA>?k>;?Mq6 z<&Ae$L{t>Yx?x>88GcK0{l^hAan7$4t^wW#M34!lbsFKd^g#Y+=lr)V$Jnz#V3H+? zw@oOkHfxnDP2Tz7CFEl#d&_bhg~)4BEJ#S8kZJ}?o?}c+A>hz(yyuR|c&Q<1t~`tk zz|lxn%jjhlYEG&HG#qI1dmSwhC6o{I& zC4OM%`C@Q6sCh2lXc8N6un9p(n9)EjQZn6LF`vvGgL2&6=Nx~?M`*G^Y^^AYyDOex zfv&h^^PoLRH;@qh!v&q}5v(3SQj!`vDjLvbp3-TKj8s?1}~A_3eLzn|h@LsBbv+UBx%i7I58&?FBComWhx6o&W&oVxe2^vf1 zsRl^Zd&sU}3XN%se^>`f0|VRJULo4XcCA&j%;q+MhD4ii2KGz)tFUgFQagIfO$Oso z2k^#V9^*dVu;u1XT6tbL?H~J0)ZJ1jXnp?xh8geB7GQ4oiHa0=duEKYZ!D+C%)Yyh zSyKUh9}H!M$i3?E>v0@bow8=iq=5ARk_qZYBvK}hEbf%?e@L?{%=3dXtq%2|El_h5 z6!ybMu^CcsTa*F>ym(gJ(kSJbHX&69YZ_LWU{bUen}S8>DQwr4^L;;|^wR*GG zhfbhtjN3-!hkbV=-AJO+OAzkGcIjV@P7itHF9m{tV57jtTQk!z%gLw zKBG+k01O}45LR;Sx6 zC}j#=DLaC0R0D8bYHO{1u%1Fa#I#Yw8cK$!+QPK}`eBSvkB#2VG;QM*qbpH`C{CCi zP|_}@299FUFkvC_Wkm}a0OUW01ITlrLz9g;NG*vYBH?N>AXc>aVCNEsZqBZ+e6pBQ zptz#DP?MH3%mPBeWhxXBQGFi)&x5kFKl!_HEJk-o;P72^O(1i zTjebfjnpcmDLZRQcYFp6C^lFwLu4Fv70i-UGp=ORAC*OL&n#Zn9>UfNtnx4JK33>W z0H(D9x&9bf4zwZ2Lpt8oox(;-giqJgKU(6D1;KG=w)!|B@R(2mxqWMxQ$hLQwxCAr zoBm38Zwp&YBSr1nK>z}D+C4DyC`Xdp@*7oTo?4e3z;^|q%PLnfg=oo1^hs$PpI5ZX z(mwZ_Drf+p2P`9Z$Y3qJOLU>5nS#j85aSS{+2y(sJf z1&R)!(+#YQnV5_1d#kbaw(A=#4ijTZ<0VaY?YNE+jH49GQU?WL9mk8Ea}_oXw;4Wx|@GDZ}RPbVR=G%Nt401nVe>6I~| z22C}Ix`NYoB-x7slO|l2G$X zXf^>w6zWD=Qw<4kb+4QCI=eZgfgPCf1=BcVH}L5xsh5VTF4h)me&%JAf~vYJP>N}Y>G~+MLmy7D z!FRkFHq?m{lu$)QMr38z1?hqyg~41Eo#smHS(t7mg%Es4x6Ckd<%H4lH;~;4Ev`{w zmRQ2EloGC>)a@A>` z6gwk~Bzx1fh}sl~rh|2HG^8b7CynL!{{XkGUM-SED!c3iZf1EXp@|>v!R-cvGs|9b z9D}W$#3noFm?4EpsVZ~r^~(s*@E47^p20=Khmi$dNOWZZh#hJuHLeqL;K`akC+}Mk zZjwArv5NreR5&%rs5sL28RVmP_XWJ9CA(0VkgP3`BoR_+UZ)qzt0$lzUV{x#2HBG5XSJH?qoW~Z8)P;4 zX_nK`aFf(!Wey77C%&;nhit7Gth8DZ4J)5_a-U2F&|HJ(IM#+ch^AtP$g37(Dvhax;XzB4k-?Ww3>An5#`O-ms_??ju3) z6*xuB48mOA+gwd<$i5{Z7HLD(3kniI(-emggk@Kf7$A9Flq`w11fb4AS~;x=Q|XNU zURWfJFC)vO;Ul?3Nk~azD#Qm+dJSlB*@T7H;Mm1)eGChCNdBDd53sRy0B4me+;cy} z6wZ@yiM+*xOqU#sK=3&Q zo@QV^Q&puh>4LM_1?cC1w~^5=%SC%8({%v4J~E*RConZ&N~t*8%>i!c=>6{ud`la~j=F)Vz`R86#j=B}$$ChY{a4UTTPcc5so)BuxvM z-en6ru^?AoB^$L4ocZO`~AwEehg@__|ZbDWx zpr|UO4TOQi8S8xZM^~eueKR=$ugcTN{)wwW6!c1s`b!wA){74>G{af85-i{qo0o z8VLxMP+N+wbUT`r$PV07PB;Vt;I26st>(D9yoyc4DTSy&r3u?!ne^*}EHEj{$cEeZ zV_>aW6<1cLQhhP9*cwJIeoz;dNMj8m0TVejT30#_rwZ5*)u$zYCD+wYDV=GxQlJ1A zAj-LEiFSnrmQ7y?_YL2fk=3QND9z$5His0U_O1+6v2@^n?WDQ8wrhSwP*lBZv?7LK zMgIVA^BA9Il>%VZb6jPuzYem;BxYhLg=tC?&}eY$>Z5~ovlmWwd$|?fh!n_)FUnGt zpdy03acokMX($?>#T-qsmQSixCG*MD<^^!cq76SLYnwB`>pUuhcYI8$cJ}3-7kVp| z9G*qU%J$1JVdPdURocD8XW7>h){3NpNyuFmWRL;~@-bCa)1^Su6U!S+k$ogr7M-i( zq?OoD={;**aa8;Wk8L-@GF@7z4$HOUr8fTnxcqTFKLIqhQMy7N=2E*rCPgHQ*FC^` zV4Ji6jbH25BxPvjCv)qTfsIBV7B1WXx|lWcKzA7BLInXe38AX`^u=02VM%L zcQPZ@mE#}~;MYGr3hHE z4xrS5O!FCF_5#mR#{tOwzcso?WgA&U0aACDtf7mh-PK?=YwB=~^%gxG^RijZeH2~^ z9u%W8l6&i}W3(SkHZ@XaJC_Es|*P9JjVe67Pc}OCAf0Z zPf|9Tp4=1e;rF73+GRP!u8!M%^BWPn$ zwtyUmzB9?BWg?afc^ct&8AVD8iiWOqCoBXsh$VoIID#(adKE%VNvUE@dJ5xd21z{c z4a?kfP{|BY!)mGu%A$lCcW0?0v=|P8TD9Y#n(?Lad7T1>l7TA1nG8C$Vz&bZ8E!V0 z1_;@R3z-6$6*a=83>}WG5Jfi14T@^1P)_fN^%!jY%-s%L!xjCzmR}o0D4VhdzMTlq zJX6UdDazR1+DsK(xBa(v`%g(8|yu$y>}qG~OA>qe3!f9*InaaL+>Z@^QysM*M_z4ALxt zcDSLXMG0)d&lS><3-a8-d2+?Z#ooyvP^2&ZC-B7e{{UuMJ>;(*!YJ7UbK3z%hzdOp zrCPXEk-H{HU%MhHBn4V9LpIs~yEFsVxzh}xat4Sp@)ul@XPKyxu~kga6*^L#XfPkq zF!h6B_64nwR+3Y`Ry$Z0(SZJS(*eZ=>5lp3isR|0&NXHr5;nHIxu0A%Sh_+tH%tnf zBm}i~lR>m*c9HFtcpB7)D51hbJ;Tp&HlaeU{IdqMUuxoOYE2Y($y^3l<8|9m;TY&? zsq2?aG*BiPm*p+tSy;1xE4i0w0-z4uVdPHRlA7A!Hy;#2_BS3WTy~YFYDGtB!A%%u zf4MjwMhlxxWd*M*7%L08J~U;aAxip>>cTuZlo>N{{lf*kZa$bu%SB3^tFz!Ut`aPG zq02sPE=s{fKnC+5BeYXN?~U36)a4_%rsW00QN)DQwnCuiL5ltX9!G4Woi}Wfk}xV; zDjfO)uDDia!T$h}ir32!B2d5wWhJhrr!SVJ}*))DN+ z#I=~Rz3A(o`+~*n7Rt+d&2mDS98d*0Ho57hH_uY!&w&dVn})d&#=Fv9;^u^+eA(nH z@W(+OO&y0NZvIPniBjQR9QGL8_af#Fy5MWjR!T4T8CmV&x8uv*S7ejW6j4A46(E}X zj4$$IEe}t@ZI!PjCPt}gm1vbGuW-b-?51@t53DVGHzLp}r-o)!>@3&iClj8kcLB8~0{!C-?!3SP@=2h`lha~#f_;uJ-Vw*%e0vLh% zt4vnp2_%JVucNq{bd6&+vDF!if_9UsVXY1oAVi6BcP-|MD=M^54a~FzR+P(JuzJ93 ztq(Un&7>{wSlFgRaXIE{GR)&AW`K6jZ*v3gw%c_JR7)jI29=@L6-fzaVhg`Gme%Xb zrL$*!-Xl2vG}+y{)Rk_h()uUt#0>7-wajEd6F&u=jLgx%(P z0!1?e@xv^kUYjLOXSorbKEA)?BQ!*v9Agnk0=}4Wl&_Z9xS3;C~eoZuTXAacyxl(-t0SWeY!zi+3NF zF<*uUQIi+ExwEzL$96-7jQI52TTQ;&>TniA+>ON;E@cd`8(SeFnZT*ZPHUf0o-3cg znr#}cV(0Cs`1_-3VerDNoB zX|%3Xp~hQ^4_cGnTaJqA!Z{)&_#_c350gS`yYZ$PQ_z{DMYvvO!t0v$mHjK%}iD8H$kGQ#2A}Vco*c3xRD?&SI zgoK!QG~5prb#-u#?#g5pU~~#-c9MPY7iQ=*YG(U7YvC3AGZ<%pltfcDJ(e3XwEwpVW zqb=EwObeP3**lWEySU{o?j)bi?zNSi(5UJFpcu``M3N6XNXatCC|H$ApJ~*7k-OqB z7thNEwKOroRygOlwu(8#2o1n$IRU5??P^mzH6&>ABO}~#(vdVRky(SHhE0_f3<=jf zB8I}^SXX{)l_^BWIxE`{+mhX(3E2zo`DIx$8j7LH>-R^6E z+)b?Zy0Ex0rz8;S?Yecy9uZb7#T$;g3anKYSMO*GMt zl)^O(bj;ni+&ty=#BD4)QaUO`psJdhir{G*v>R(BTYGj#K_{9(BHlnMNZnJ2>QMZM z{ncSKTx7CHfr^o|t7OAUQkm4B!wsEJ2I^ofC5k(RfB~_abGuPMVV-Psp}}V1mJnKa z8aU=wl8hWE?js|Y!wA)kb;Vvy4$2aVGSWD})q$a@BDlYZC!~#apCp3SozSGHDYZcZ zY3YXQy37)8AK>|K?yuuii@HI$m1-)eQI>S-F)e)8AzE^A9o_m_va_t0IS2xPQ)^^? zJ-Ai5E7V~jH&&@M(fH=KBk6(=0in#0J#f~|tia21++`$7yJon#DyArv^B`AR)|L2R zVNZ~^23jsWTXIrQ0|xS-EpEg6WvXb0PzE!BW`)ulxi4iR7I45PgoF5Lf!0Eamo^vn zw?+qL+n6#60HpqtyR8N()d49Swzg@l7A>AxCfb z)vB7*R6TXmEF6l!$Mu(2vds}BD*$pMZANqhEXEpOSd-yzw&pfum5hvcP|>!jp)~&h zOl0I}4dz?5l1q778DcwG7?3EwndP1rLFA{(@|Le`Jf+hVE5x*s z4MQS8?Wv=9RXUItr31eQSowgdMpxQSi2Qn{D3VjFZ=VXvILK zav%ec^}yDrfa5ICSlKnKDRPsD9SuYz)UvYe1&H*-Y8hEGyzDUC+{V6FatB%p z)Ke<@;8@8}wVx0^rrO>Z!o)k~sUR^K1r<7V!cS0jH$PWl9gKF(I_{+&<8a7UhNR=G z8d^kkLYEhiKOEM+B%0A<@vEUFpL0~W^{x+@7p*~-`z|`W`l9}#Wkg_Nab~BUuy7oQCwVKT-H%+%#ryjX{{L! zU818*OK-v}CF$r>Be%7IS#BaTZd2rqskqQ&2t6>7bZ*imGK;2Nu{27m8aU~+DK!K6 zW2t=Tn__o%@k1d8y$s{$x@%(+goHq}%ZNuzH zYIkm-+|NyGjXs8QdCaUy7UkNIzTxNI3RF`j%#nq*HwJ#yISJ&9Ud)oVOK#DCz9FA! z%etb6JW*|B1Nq1c*zK*%#^3_Q$r4j(*Fn;Tn5xxDCsbuQ9$Eu9xVLlSiB-xl?KC=e z(>(C1`5Un&K0@9br@o#eJ-+&ppsC1E{uoE{ayRv$pX8-mhIkaZvWhSuQ3E$!XVy5bIdKS;Q5AMeF{mtSN`dK?H(8+Y7r|<`Q6~QY9h^mr+z~+MMH$yDB1tjj zzDxW)>>O3G-qK96%47<;Rhy<%t`TX;nkz}qN61`T$KfaseOodV42GE!eep)&K&vJD zZWh<*8Q~!dv0%-&BdHmKTpo?2XRA070LBZ1HJEv0A2oKGf*S!+Hnb_pB+jc4fkYr> z85Af$?yXLB=tdh{3+BkzHV7`OBc!TGQJ7(<$mgvxt|p4B6PDi5cTFr?>t5txU1^>g z7_wwJ{x0AAtcEDuTd^Owd#XSmF+FgtxE*pzn~0RRacU_$X;zbsb-cO@IiW#oxS<^B7pz?aF8?xAhRI(`QkxKDDEEb?#*`qc$E5)=o@rYxLP{6vD zT5ZcZet4TuQcTeQ03Mg3Mz?PxFfd!YkP&0~PIRt*_z5mh8)lb}`fIfpGlfmHQ5$xQ ztGPfq`gOwUP+|gdkzBp(w?)37`6C`U_U=Ndwu~v%V%UfiO_eyC`zR%eulV;*IR$bo z1qO=CO8V!Al#>!9waoK&>vsEWUXivIj5D+sAP-St~^xY7$8HS|C4TQyE zkz}%CMz*Qk)Te%0(wKJCNjIVEJN1acV|8}dZycqffyHA$dvZVRrd7gEk&==_iC*IF zIi~u!trUo^0os&dRiGJVopBvF{{WK78HlagIb^!u;DFI+00_pJoVsXm*+THcJ*<|# zJD8^iIms64Rfq~kef_k<={N#*UHe;_ijU_d*4fv=qSI%#xq9Jss8AG&{Ef`~u(zLV zOBrwl;-wsjh&yUON`}`5=T1e^hjWV z0$N0=6`>-fsw&#*G|vr`EZHBInN8pm@ny zC69dd(xqq@;xNt_GTIQhh{tUj@5~BCDH;GzLFR3?~tP<~|}Gkmv?9qi7GQB@@*07GT1I*dQpPECbFC=+mCfP%u9MSF!qcHV3sn0PZdrsRE0c zrdXt=B(h-pYmt`hTtx~?96L;gouFIHF4?uh3uMBrOxWutkgVu~mMKu%_-TDPt_ z`#%NRg1MT;-J`g%QK>I2Xm=0-R8abZOeQqb8KlmBrqg6oN}FX06;xCLN$xqzp-U^NUELRSQLrK+$}?>XxVG;fu;Bv z0ObDV`UbC#IYPZqw$ojjXV$n*vJ}xa0oM2JzNwG{;mkyBkUrWji$o)iiZ zADTA-h$5ngIv;A`bjDe*a@pNNi*IFX8_F9{yNf6^pd+Rq62;Sj%emuI8^sGpwB!z9 zKskYc=}0?Bdnu&2W4cD}`IU5GTF_yz{ff~;jj(%;M&cy6SnZWOjS~`gD$}$Rq0a+T zz;O{JXx0^pW3}5PjZp!mBV4FhQvu=;m(tI;mSb>GI8qc+B1x&Pbs6EYX44ktIPaq6 zBfkvOeN9MGa$U3s_#7Sl+H!&3Q~=|O^%x(`@*-i^mq7r#fHYSs zJ5@o?-`@==b@(CO&bLvtHz#$}&AL|3iUStimY*CC(CHrWcZm1!!*3UkjOfZk7R*wb8sfRgt_Jv?7UzbwhT$#u!phQJ#6b=!bBvSM z2=0TEt{CuKza=bJ0r>f-4T)lMaC4~xD$_%Tbb$e7u!SCVy)l)I)Jn<$0>3LAqx!Ku zX}$-_f(-Unh|&=vy*F+(+@uDm_+TK}7FcZ{X{ClB^2(*60Fgp{e>`b1GQz}OaE7eDI`#xNzVgG%%ClJ5Eqh0je7-Vs|Qfqmn}wpYA{~B2RbV+EqTesYbvR> zf_2%nu_Joxx|E>w#5IIlIxq2aTkg1Iw}^nD8den~f&oes{{X6Dnu8|Ac@9^N;+xMZ z0_8x8HO&f>MK$>1f6u!&XeeEqRO1p0%Sb1JNXtxEZ6|o#8mstX`T6B2MB5QnDQyDS zIk$!dU7*p_txXd=>PK8^TnnQy_l2}CBv(cwBF77_AkQ0YhG=KVM7^(_*&F zFWsE7&dcG1#Ta(+y0>v7F_HfOamBuRnwOsPXV&o;~Cx3G_oDyBIj@5QX0Sc%X z4`HqnkkHvW>hj@YD-6J_ZrkKFuJ8O#i|BEq$&MkrxHqG8jLqXa(Dtcn)`~{HrxE(M z1wLgJx$|3y7WuUe3E%M{_jk3LIQ z3vDz4=6KlvUeGE+kn{&}J$*2#%QH}kUwAhlc;yzi1bJ11M#=#yr%*^IBhv=avj#tp zwU|j_4W8s_H_37<->}oVxztja3e}X;7`Wt5)H2>imhj{$s{vX754LzINREOCE#$Xx z;|)8m*ufeTp*S53wgT^mjx}Uzd5VJ3sQ^^clsQui4o8tWIH?)Yt&1trtb=I&rXK-J z7L6zB*6GGe3fn~tY^Di~HKv_%g=~)Uz~Ffq;4snX6H|;e=Km z5tQ)kebJ1fASiVz!9Y9DL%ZNQ;qgL5mh7FCi-b?8i3a%{>sqM`uUZW;oTDU%c=0R< z@IXV6QTX&li+?z0_!xCUZOl+f8c$vo>w z=mcUhxB$SBx`RWEl^N+s{{Ruk-iZFSq=>8z$>EG{9mD1o6wu){iydt=dmkTsyx8O< zCRiCmBu`PWg{^%FAnEIj_fQy@CZ0Q#jhcDm{kTy)knPY?ip!`uWJVi5>X40fGd$ni zmJ&p_Gg=ms)!R0$-S5g5WoZD$M3xssQnT_P{E+V=UMRNXSjhbl*KfpR^(+`e8rA*I%$Sk4xAb|?5!3yH&UV8%3_V%IZY{4YWio5P$z3I z+Ht&d@bV;#Rb@t`n==e@8Dn9*!v?I%MvnxtBs0CFq^OmWsH_vawYrL7{=1NT@>k)e zyIbprx{wtNt`P|&$3hD3&Xj6=aV-5klz8-3v$rwa4oQ^w;irL^*RiPGzso#PKVm%i zC3C!6@^aiwIze(v?o#R#X`rHt{BbR5t_x)&&MWMDSG5C^iaTF0XpCXIk?XWF(9*P_ z*9W{;fNMUCwfEcnorT%sp@2(lOGR&cBG3g4O$g{gIr`$Ali-ufT#a!bYmYblrctz( z@Rka$+SImG0}h~FX_X|jytTQ8+`7pKJC@vow3FNcCtuGAG*>2pxO<*T19MD?qTNwf;FVoEc5{uq|AW38r+c?hS5f24&LNfim* z`q&ZrDhL_=czk@@LcKvwUTWd^%R5NLIQghA!Azj|7{7&6za-06hzT~on+S&wK_h(Gct}C@1pk=1SC*yptGem*y3wI$k+~5F7^`XL~ zxkEPsF|h@B8RRdJt7^vF+O_SfzRkHi5Y+F_+WYUNz1iRr-DhH-5R zSWeuFu9uO}_X+)oN2Ygvcy?Vu$Htwj!%!*GRJvW3l* zwu^5KuyX>EPL)cUg$>s|FuK)@vu8(@h9cd@3yItp*ec2rpx5GXo&NyTjI&3aw?2o- zY|*fqFgD#bS(;_Gl%dB@^`FrWmJ-NWjxaHAET%u)wkEZD)}IUQUep`6e-h~O3M!8rl?70&5@qp6?xDlf(fB_)>1+y3s;#pMW91breS=mzBX+es8 z^zk|Yxk&)lw9DHGl|!;mEG(ch+u0+=Bpb`i+;>p+RQ{hsg@++Tucq+B9P3Fupab%q zthpS%Y`yZstipj9G(K?@L0%-GB2LpzyGi%Jm}4|lP}6boY>Au1fXgb>tfb^uIv(9C ziso&K;LrWZZXrm+l7ev01cN0dXg1UNj26l157X|+}N!H+jN-S8Qm5l9P+{ zhAEvLnS@XyP*c=~(E8$#pMiTpWM0q4+IT0OOsorpRRnA0wr3e8c^)aIAtHr*5ZoHolmSKjdSRYZ0&N7kkjEmbpPlmx zv<8c&6QWKH*e@Z**+FO>qidMT0?|`OJw_X;i& z1bYs^2Gt-O>(q*V2NUedLOD(5J<~XECshOm0)a<$eql^%Gzv^(xVx1d7snM}a61`7 zoQnQfu4zab0ri|+tj%#LCU{?Hl0pGh`AB1__QL9537Rekk>YOcW}etPY#U@%QI$?c zq^)$s-eFrBTOf11u}jp3&KVX&3i3$B0Sj7xQ8mHNOudB z!HA&A?9ks$6RdKRJ1rv`DN&Vm%;6r*lr?2(FtJo=nq^bAU6fL!WKJUHO3?hXOqQF| z_h5~CmNu^9hKou7b;auAkvP*x}*7HLIQqI&#tfe=JEN~0O=<1yPLN&o?g_!kRiCP<9Gx~v1B5Qz!oIbQ`FZC zorw7W_O{6slC!Zp{{U?TR4Wro(@~x?a0IO3WrjCGCJqSM%Pi7cU%`RP0>y+BG%=VZ5&9cPb`6G5S)}R#|a(>P6saj&|7meNp-eJ zz}X!t3TSk$nq!|?a#?LL-U01)yi!b}>;oKXLGEf)0ND|S#tH5EAH3!sOLee}0*bp8 zooltK2I?P79O-396v$ZYVz#$dhU|g}5<gW3GqP z?e?ZRQ4K3Tx%!)s5>SY?tMe1MGPZdQYH&5L`wT%c^6JV6X=OslD98yaNz_#3LG6Q> zixsJ6UCqVK%R0pynQ{z(5(lPzPA29GB+Vt4_^}#EAp&xvbq#X|KpWEsDnYKMJv$=ox>ZUk?0+kA^Xg#vX;7S{*EnOQS_yg@AlbY0>bj4)|(9*zA0yhAZ18Jb@4Ku?3 z0OTo1$-bJ|&dT9yy|g)+fTKw9EtwVD)^N8xEV2vHc8pw;Ts9dy9fW5CN) zKXb&~yl-$IuGHGIrbO)&6$(u=IF7VcA};-t{{YHDW0cXZG*D?kGSR7?8$Qr9REqM; zlt~mW=t_dJ6%P?8v>;}*Y(8~XNu%p^wrM_`+oDED*&zr30BK5kX@^dDCg55t&9X7J ziIqVpu^pf@75!Pz3S(JClw0F?$gEwjO0|1NQU2kKvXIY%1%1ao&n0YJg9HY@x8J)W`zf6UDc{L8fS+;B@G`#jF%6qR z05547A8ZAuV1`eg;9a@$Mr2ICri!%#D*NOyv!v`0aeKqdJ<3OD>$S&|U@Bi~Y6-1$ zslue24*~fuKK5H!E-c@71w>H;dniRMF#ffP{k}%G+ zsiDBqPgE{b<(P}nEIflpbmPYLa^||{l}E=s4+S#Khuh6@$8hh-EGsRg#Ajt*jG<4> z)YIdIn~5`1XBRIG<*%AqB)8+hW9Bbak(`PzN($+K-;X1tgl+Dio`0c9+{P5Bc@EtH zIhGX~P-9#HvSi#n!owuivKI;8877%&mW~G=+dKAsn(}l47VdZ z(Z>hDJII#d{1d~vMKuKo^!NNRbrL6oWhJxR@HcRw5pprah`^9&tC^@879B9{xB4dk z046>j1*VYO#XMlbp{Lwx~QSG#Qew+t<_b(Yi~y5+@EK3aVK(+xQ)Dn9|^FC^)*} z=ey-*mgem(Y~m_>TlW+NNv3oa%ccvqGBkc0czC#8*_oA5X11Bw1uj;Gri7I`<4l4~ z^}O(1@{%m4!!=0=UXhp7u-*MSQwpbmFr4arwRWa8xr|TaSlMGF?%!IEPMY+^@Y|+E zrO5{O?+aULVTi{`V~=E&ZT|o&(O4B4VRfi0l_-0TxaKeT7Q_#4*hf88VX1 zK}M+uGlJAp1J`6BEtf8nM6*r`GdF>gMB7}5Bxg@t1(eO($d?O!7ajK$l5z^SF}XIR z00kV7QNgchC8>r@#35UA`Y7@oeXHNzyD!rv+=|v#z?wQJV8?ex?F>aa;g(FA_D#9E zy|cHK=8%hup^Ln;1S^;$*yu5~)D+GcpO2Hix@B3_n%omdf1H8B83)4oT9KRvujsq)BrHqvO1OI=ZoZQV7u6{c%w0vsxBAFn-9u~klQW%w++Qi*7mT=UGI~# zK4c=~6=*t)bM=Fv?nJLV_WYDK?%}P9mS6zXWGa1n;Kh@fMuzb5zv65kkBMOLr;YQV zk(`a&i5lhWg!*F3{M`%v#bL-;SbcrX(%Z`N1xtGFc0iyS0nhk<4vo`Td z9k-v56=CN69i$doWlCY5pvuPw3cRd$O>-jIq(n&51y&LlT}FgpOtU(u5V4NZ#je#Y zTIM*^uIPf0;a9SOviRb?mjd;njz)W4M#9<)dwNQne4>OhldkW9CmCG}gt-(PJa!XH zCn#bq6lcK_kxH`FOEy{4pu#Mt!A9UUytDD#g{}Rq(1tQfTm*WC1w$(OQM9dc!#5Tq zu%C2a!O2}WAW>tiO46pDH}t6at6gy?WfFo&Xdy+rjU2~0F-p3nTSK=!a3n1Ux8$sC zBw-o?(KQ$iXh+MXdS!>1QeYgVA?vaDYa@$UZxOPcs=EPpD!pBl+N=uUD05lc! z!RrjtnWVD5g6iApj0z2qN$WaNEqM)eVQ;|9M4KN$A)Cx8A#8ygVLgB$tyK1Q_ zdkCjNrWT}WJ&BfM8r=`vkXAOX?W|WJPkxxmNFIfqk{jq{ytY)2#sOCaK_HrCpIkG| z0kGE=cIUPYuK7q+awl-B3L0*vm|Wz~MeaWCc!-FA>(E^VyXP&@3d9VPMxlu$ z2G*6PRlshIm1FkTau}9ZmEXBpgBnq3Ooat7iNleZ_5I?>Yd3)ew#Y~z{J;^~55bNf zLaCBk&n!G`t>PhDReh!CcCgTj`*p(g9!-^(AqDNIj@=_|pa)_I*-$fDQylA7H(w&R z@+Gr54wGBLrCokfq}RERT`^AH&D57X)7(y;AUw_yb?u;1cLQB$J#c1C5X$ggrL~(z zd!$h27*&~st?EJO&4S#3`r_r&j$3JK=Gq=XQa0{8ikb|-8e=##!QTtS-%kWn$8e@O z2ttIC%NcK&Hit|Vw5ZWz9FNzo1D<|A3;%u5HNSb6tRa4!(wrjW# zZ+vGh@D&D2o}TVlcf6iOjPBYA$m&9j=}hsa;LAQtOMPUl(r;rKY?XR$YJhP}s8%bJ zt9~ZtK{dgUf+X>(FwBj2N_KUyK}P2?NJJxjVbz$+!i2c(}=Q$>2BjO+#)(g0NuU% zil0hiai%p0+VQi_iFT{H-Jisf(z&1Kif4WVcr>Tg2-}UMu7Ch*H>XpuuIL6 zXCg#FkyCGBAcNDTDTbDrniRGBu2had-P=*OgWW~~peX?L#R+K%MRwOS0;<6!%&h zMP?zWz-inG8rKzv!4AX=c6niWW0Pz_t3&dV0R%6o^v247=;|lmcNMS$dyt`Y405Ie zu+k~t+gYsbX>z~1#~RNPlMI1d#CEAx6=FXl zjP#%uBgk?wh*}7*Bs0MnO-Ncu)GE3u0|99jExDt9ud-Bmx;TqDy|GHH|Te&FU-JBw)5MY}45k(ic6A2k#V>s)8? zxi)rtcNBw;lKsMu4 zJ^jez%xi8)kyNZ|Bo3mqkd3>6KaM8UUn5OH1C+MAvzkAtWf32pNCipTK;(M*;?GHl zs9H<*7N*)4b05mU60w9i)~l%Y(*wz*8A*k$EhG)F)JG<0=ARy&FuF-FrcZ;GyW6qj z3oG`!iV#=v(;1Bhoo7iS{{W0uL@h=DcPaUY;fc1G%Oj@R>&5ixJAUBWV9brAbfBQi z0|D3MONPFA57WylNoE-M=8RF0pOlkIigg(1NR!~%O%EobSpwDsw-SdHE@UE zvQUVLaQrCbuL8q#wzlBymHt!Z8PdM~mBe)o%PN%?E%;tO&h}WIQr9p0QMmb%t(||S zmCp^7ji!Chy_7IPY|fxGrb%TAHzKN)p>xrzmLDmuMA$#KBeK7wQ9}?BIE_oCOr@*1 z<|$QOF`k*A?)U7~wzZd(w*@a!a7C-_bW&Uc)O0n(UYd3oOt`7XNj!0xUJDB8UDn%;<=Huhq?})iE zygO@cCeoWoAk+|Q-MV0DXTWUY`qPoU;)MK^p(Znr+ik(aAC{w~LDQxL!WummZF#N} zjN?+yX`SR&D5ybiLZoh>rEw*tGKO|%Ianisrnr~>QJi@iE#2mM6GYDp+U+(T_o^Ee)TeNLC&%j=5oY z7#nDiDyZ9=0lK6N&%*;a%*nU(X%x7rrQ~FWHY%1VozkjM4R#O5rZ%{eSeb@S`=f-l zlK%kB9`h0!n3jZRkt%(1%M+PWKbQ~1-CJ2*Su8B}v6&CnM(6v84I@{kroAyYs|w8? z^ZaDo)#EG{?`wBcDm?*L0dy1q3X#_VeOhqB{(ept=Kjv!lcM=hDiFr3b*anp$3uR| z=bAo9&qXLTA@1~M9&KH|jfCoF~|ttl;>xGh{dUfUTY+HKcxhcHbSx3<472K3Rer2P8u zU0UBZY_Nu^$VsCEQQOxLnJUqw;NI$4WJG1Si(sm`peovSu%=bh4V2Rkw4xDbkehFg zD|>zGmz*K-mY}9&RMR~%S|Upp&1=Y8q>N;@J@QG~2_WdiWPJ`gWiAOsgXD$em+5rj zWq`2k6lEZ0RhL3@#5CrSOjDLj<+%GO*(ZUFvXoLFLsBT+eQTyB`GNTt;kftZ?QUV7 z;KUMEdDymy6m3vWM_n+jv^prK+ZT;$QWEJCu<#c&Ry7-HeX*&UVCDYUds)>c5=+SW z3Ali$C6bj?QZ+veQ9@sVC((cH!)?aL2$BXd-q&l&ps*@^tN9!zvnV~8sTNT!wDO{; zkq+eA01Q;+pcpG6y%2dmDofsMUII)`D=5uNZUK9iw7~CBY9{i0Erq;ZM;5iWk$zIGEuDVpwD%P1#l3QabJCv813p))b)EdHC1Pb{j9DmqMzxvLt` zd`@^VVC+e?ZaBzZX7MB-qA93leR3FfgiO%=r7XWkb!Q#JBfBh?w(dV}t_dU^MGY}M zX6$U~BaVI%6|_k9>$rfVQ)=)1Z&Q^wX@ptwRW!x;AEz)tZsut3qZEo{3S&ES6|Ysn z%+CVpQ0F@j)YwV&R$_8#Z~WIgB!) zSb0Q$OB9i`jM4(H6EP|PsbiHsQ-JN6Al!eKk+xYQaF63Ck?p6EMpRM`U2v&b?1Crc zla+!ejHRuso2kR(#4Bw-9k|OJgIc3c6{Ih5CyAUpw{vDyfYFHbI8>V-v?Dy{8*oEF zJ*!+I(A`C^IUY-nLl)h&Qa6t6zV#Vp?_66tk#&);w{EYwPAG6@;3`0Tv5lRr7&Rc* z^#{V~T!TJ~67mnlJQmF`8`vouXq$+p)B0jhJ6rN%>La?Y~%T(K^wK>!8rZOfq< z^uw&SE7Sr!GTcaK-@OsrZMr_e{?Ic~yK&P2XRQqNC0mKEBCy{rx?8k)GYX2h%QK#I z8q*Av3dvV$w;XJ2T(}03Z8R&_T&wWH?)5=Psl!PmcM&Mx7?y!*tWd7KJ+s4S4RRuO zRk`N4?UP3_-qmPYLn3!=*fm*(aHfYx%^`KmsxkGM3HRdaC=37s0a42Y*HQ>~76IR=DxmmXjtC@_SnTa0YVf%JaP38-?w(TvD zpK3b_DPgnQs}7 zwrhy4o>o^%76C`6rVNaoSjv3`-y!CRs!D`zb__|O6|D_&>4jQ^JQ_KLgQ1xSw~{@p zGcwVJ+UB*_<4g@{D*}@{&2kZ4LZT~~JZ~X)0FY`JE@0+A0fWy2LF{gq4@Xk zO8%2WmN}lK^?VeB_&FS%pl3+X2*DABU9VCyG@&CF&Rl~|5G~NhDqFdBwUJKShH%>$ zodMTwESp661tp|0U##wYu>@smWTb*AL)Dg;FG-8lgtk19xtGBZTV_^v8>*njD@?Mf z)KFl390v$m{`y%F8U`_2rok#O8t4TMe~uO?Zos&k%d+xG#|X+Gb@7oy9Zp46Q%02r$@{l3S_Pk~wV%Ew;Y-94k@| z$p*Une)=R^=v1^t)mcx>6{-zSrYN%DM#QgVy0w@{WBPE4tDz*0g!*A#Xl0_W1;O3j z-NVZuMQBYxk!p`16f_2;;H=89NdEvQ3>=6N@+?d-D~O-pQU~LSr5d5125X8oNpC&0 z@v`oV_N6OIM#S_wRN~VNPEIW&SBaG$Y)M}PrFR;QD@-d_WfKPv6+E)Jl{ZMWC5YM& z<)OlBN(ahflZkkVm8{sfmvf+M77DC4tBPq{B+miOa#OSWkCK_(!)y{*k*D$}a-FoR zQ`;Le;B6qEX?@KcGEA4ykdG58%L4Z^*CIpfnZ*^6)*&CLaeTZNFhyzMDJ%=M#WvK^ zf`EM3yZ->x5lhMS-ydmb!pjWM1xTB5VO`DLQ<%=919_K0#{H1^&${glw)V)SSV^`i zKn_6n)6jpeAk&hosY{fLhUIT#f^}z!jVERS8@QDQwe+PAt~)TQ$Tm{E<9H4R&MSKm zZWnbGVyv>WD`mY#cp2ist8hZ(*6WtPj@ck>AN)Ec?CZ0{z$r0z~Ib!#gz&*-ROO#rQEln6Lb;_R% zMW$L8ke9wWxWsv)X(W`=GefvGm9OE6{P5PChgu+n$F_kVv;XBP{>$aH)^A)1G)Or znPIiK0?A4Xs3wrb733mR+{?LvS^_(D$Wo&TrevTmBOlxI@RCO~(c8~$8F-H64I$h{ z&u2e7=2u6Sii!mX3I`PL~~OZX`&sg+nA%Ew9?`eUE#489ZcX)QU+ zX*^PyHcXX9T9Aa(wB@M8qF7ss5#}$go8>Yiq#Q2`?Ze zxl4j$xVT?3kDqQ-+m>B%O(>*f+a~juoP$~=yT}Vd50RRh*ZAUZO(KgclGoY%f7eAM z4ogD{nQj>>PVhTa5nV9&)k!@oA>P?p#mtBxmQMmZ0ADv1siOg>vBuQ4HZ=&LY0hx` zUHoE5_Q7;YT_poQZ|k71 zPE>~4Rq(`}vB{F}Km!M2y;~Vrx=~>g;~#O zpAu9l0kopE2j__CdMlPehwe^bUpQ+9iX}AJkx-H8+;VTj1>%gkA8))kc*KT5DoV9o zzuZzusohgm{{U&z1FL|e-dFB^E;|@*;fdPfYKBIp>IxCQnI4$gQVlpHIdN+p%+eVa z8GMQYkfOB&1Ul0phMx$@!9H@gP@!N~$XY;*v?ivRHon+(Ld=gsqS>R78n+G@hX-(s zCWW*)oUoeQhdC_W+)pe^6HVoIOpjkmd^4fM@Hnp>X>7;Bo1LO#<+psQzzUCAdJ%$~ z@)#+7&uKlk7ZOy7T!XNk$^`{$QD4ge>&Q~@A;ew7EuyTEY@J*8g0R{YniT`k(zx5- zfmR~U+B;ciVGtV~j^o^-tZG$ieMT8sjQsLnag)ek4z`m$5P?E~gRL^bY7B=Tgu1=w zHeDUjOXEndD^Sb0R-|U8y5Oz_f1_<@!&z}lEtK~DNQ&hvMqZ34Mt+90#FpoRkQx|x z+bdIZ3`#spAObK+Q;}@*I4!mavo*fski3%FLnLL0q+|jH+Jm2~91S`OPzL9ZjudET zUo0aax!N&+)=%j5p8t}OA;rQq^9Da9m=YAV|Dgn*!a*GOJi`QRI<-S z%+vwbO5)2XM#V0c+m90)*d(|a2&6jEv!SW!>~I=hL4E{dx`-6Lw1r}hMuxc z2C39^!>q0V+1E91eSDV-acr=xz$h!O&<19d%;4&{5?dv3++DvN%q-E!@WzW-ie`@5 z4Ws$j2=zr0HXOCRz14+Hy1bV?>cmjg3K7(NaJ^8=P#1(8j~^YplSLV4U9FLELr|kl z0L43~ff}1GSaF0}QsfU5j2br3mIENb0iFh3$j^drDIDP>MPu~n;rwSZ^f`m^>FbI@ zLbfr)A-lDaCV<5Rtwog6sWi&I*p~MJToo4C5n;5A1NcQ&N2N;ogHf8+mBjJ%n;Wbd z?p`#taTxBI$$3Ju?N!S<57cXl=Tc^7-rKdWBV6|tc+#~2v&?CVJqXZlCiYoxUeb7s zbqXXj+uAFsKG;U)fQ>uE=@^3Ak`M_y*cS-d6H+_9v73U6@=9(k#jRA5l0MMn8iyH{ zec!_p+Fl34_AL}mZza4F%-&eLWT7E;zI%!Gz|Q*6+EVCp$B~!n?ku1_Q!6lnPt!)r zaj4AGEN|;{FG>=>y}GuPSn?A7^+wrKQOWlsRR}#}c)}sznS@kt;fi z0>X<%*E6LsBmTxAP0jHf#lYk_A@uhVE21jy3$#?}R?Pe0+OGgY7JQExHOnjjq8!~= z175WPxOU(T$kRqG?P3x)?o8yD6%1>jAY*wE336Oy7OmH64&$)5k_coeDwo?uBeaUp z=l-~SiNINwPA`yMuHQ`cS}shK$RGRRv&fpWL-n>YaTCiVvaIlxbU+5yMru@M#2VuN z0J0`(Yq=)4l2QW~?TC!nH31d;@g|F97P#v&nOpzlzaq5LY zC2A@`qJ}tSkV#94;;#7^F0TM)##-_GYX@T$%!jf>P(ZJBSo%{eOGPrkJc$x3T)3JAMV2KeXxl?g zO)L1~IDM`1GzzuVy~>DWCNf6g$U>FRA-_D%FNFMqZa5T{!5#>%pk|F7fZRx{Nm@4U zfcE0uktUp+++SPD>u+>+s2gJ|O~m>ZI1NRkOoX=MqHDLhNxW;=s;x}6Ee=|1g7-#Q z3(j%@xXCQzm73;b`);*W4ZEr68w=Ig&69X5F>^P9XHPqJ*v~4EDqOpeU9!To5Ar9rp$ru(pNA%Tm#TM+F zRCgmSrym?so%ZfS84Vnay|Aw-+A?hSlZM4@ZQ-M6>M-H|{Kz3c%8uZaA(o;>6qZTDGv`;=SEyk&z%Ke8?b!nG~gPG?E() zif@`JWpcYl#!)hz!@EXZDA<$KGO(H!=6T!OUOp>096Icz5~q8hu4}v3rg&ARoQjl- zry~%sM^q9jF4rP}vk~3Cxz?t*Waw_BiToxMp4uSJnbrG%>fg%`hwPrSWvlPFZZ3HE zt&5~;h#qjOw6Rf8GO0Mv?83fCl|S58Qi&Dg6S<{Ijl*CWty@M6bISuxzaUbb9&vX! zQr!izrq?x9trb+}Xn&p+Ib%d3$$|xqZe>1qLnhTxP-6;1Rcb4yEtJW(EW~}sa*cIr z$w;l5G2%cdTV18I!W2plc;}woqqpo(%T%v!>gz+NTn3ms4L><_k24L$q%@fZq{rHa zT+iVDY-_8&uJ2p61MaFmR!VZjEJ$mD!#N-X@Hp^A%Sta?7Ch#j?`p zf)2($@%xJLxUm!+j>N;bfu8K#=a8i+Fpiv|mSn|ow>B?&s6(o%gE7}b(w~k7V0eRJ z$2#4|B$m$^wt$G@o<*jg)2=}2TwlB*Q7jKPHP0U#-7B)(L>1#@(dm}zk6ySA&>|Tl zh~+tZ&Os(D#!H7m=aex;sjW9uepp2?GKsVFhn^lzDIqcq2VRB{{Rnv3S3JAA{S5!0ozK68#eeHWrHW|;?J4-jsj~bgF_%-me+D8ay3rk z-o2+>G^n#W8sySTxOnb9-sLV0qA`+XIWd>39-X78#%hID|tPM>*4Y z2hbdiF_xG7jkLw#`%ZJq!weFv(9ER7&6RQ_sWj9KO`9gak4|RB@L0R6Ko`i1ChCV} zqaxEq&kz3qks?7$!gH6qmg;CC@FmD4(FLtL;{7CejIM(rlzY$~$HR+3%5 zK%ll%6$Iz0HN$pHR+&e`#PT*$OAR82HSmE_YH8fnt}RUxo}&qOBH5**ZhJ5SD9kQK zhtU2w4Fei9mVa?h@rdDQRwRrxNIqpT4&kY&IF6JSP*M>80F;p=++#5XlrZhCS*aDz zTw4vNB=y7@&VPiG>gMKIBvy@taY6v20<|Ox`r-b_7||E}ES9$IDRFRthT*$%n&`Rp z80FS1zH~puNo#ciFap&gJ{M*Icc~P}exshW!zR$LG8d4Kj#3gCUv;cTC0&7;pY$_j zn5pT3l*WXSpX03gm?trEQlXk!ni5Gn>IDrl_+t5eNJN_3I}1xTmP4J?s~X8DYL*FI zs4Jjan*#QQ+{P6$`B&2JQgk3t@1EiA1oFs`c0 zU2q(?Lr=3Zm(v^6ie-0YR;<7pENZ2VDb~2jGfD0D-n_M)oNz@DRgeheE+|_dNm41b zhfML3vuO?4ee=r5>1__*9ArkIZlxTJ+vEqk-xph+Ni_T#$ZgX3f=Y@b5^rLeF5+uU z^EJg3a)gJ&732pMV{LHmL6M~KNUFdy8XYQh7*D3GeC7;yFUndN7Ac!_bt^$azzo2p zei`GJYUHj9A8T@!_74=H_CVu&%TrO60j8D3K6egTxE*uX63i6pWy{{W1k^12Vz zsik`Q;(63i-2TLQJF95Cac_9yYM2<-yIP0S@WXDb+4M?&TEmC}SGJOSNdWUPVp#}1 zqyw%77&hB2!OL;nxJfN;RNJZ&(B_iw8E3onjBOhNJhTSh3w?sBtye~+Oh&B1MyDgw z5zDfWNVt~D<(@Z4+E+kWs*V0J?lq`AbHy>519mKIEp4KnNCA*YO2y=%*eUvbFjF%R zc_K0LBy?Fah(GlJ24BYqP}m99_VV6b_f-rs)gqC_bk@By8eq(zKxtCNW{gPk36r&u z092@^Ov0MBBIv4AH)D1<>*l+S%&|E;;bjanpe1^Y`V0o;Knomo{e-u7FKRc*IPyGU zd(^JGeW|Fx)|^<#W12~?mMd3@WlgNe-t&*_Le0+ws$J(VM6sR*E>7v3}~U zPiuSPl)xyQ-G?GtI3MX}w_f-h(Mu7VD|G|&!L(`{mLIL-?a^j=kI&+u3K$S5NAVav ziH1n7Wa8$BlTmLJY&=&>S}10tEC7i>cE74VU2<$}q!!>E&o9l*%Xn{J%C?}0q)@?L zI%QJ7HAh@GM1b^cA>`3`NN!bHFtLAcXsHzfrn{&@{y0r$7;?z=JTx~vn~12bv>4cu ztU&HzQG{;Fh5NQnD%!vZmE@V2FVitK70CA1wH-aM*NOf$tdv?n&g;WTUNFe$HmO$l& zPJ;%A?Vdfaxb2AkSeG;z?yu_xzJTN~y_5$@jqZQONbQuA=Jo2xu3!vu3C$~XuE!wf#ScOLv z8d9KZueLe1rJV@x?TD{#B@;^n1X7*`1cfxMO-5Kb#0j#qTwYnDNfpJrPZ?qV02P4)uzbMi-nn71F3IYv$(`jcW%{yXhr+BwnACQu zJ-e8lY10&cLnM83J-i+bs>bE^GrCX$weB<-Zo;P_>+HIhx6;T`V;q(ShB=ujFdC(Q z95eh1vuC%ruO-A*?I)7bI&TeCV02^oX^F^Sjm|}EvOLhQlF8bL7=Uxk)C22=a%nr` zuI**9YiA1O$O%LwF6@CV_+hfdc^qiuu;bR+DzwdCE1cAf{!)D_ia0{@XABIZ&Ucwn zt08?Jr=?C+z=(1lv{bZN?l{Yb5bPPpy-76QMqlnZVfVj8^NR~_X9cC4P+Tc_zMlA=rIeDC9ETv+uV%5Vvdb6-M92ltGN-7^hYt<%yjKz#1aW|o0%_x*AIqjDvDK7Y4|QW5v?&rM z)PLJmPy-SDRX@WHv<)dDTSX1LPh`i*Qv`l-7wo|RGBjB-r_s8or=!SC}BWO zYndb*sf{V1JhWA~=d7*mS?%I$%ee{iF{acGDYk&nk<;G^tfYobwk2rS+>D!}kiZN~ zTry^?v>+8Vr^g7s%~0j6RHz7GwA&Kil=FI0McgI+At#vH*G;~OmGq%c>%AGoCi={-iDH7fC&?L4O z5E!k|m?M+3Zm%03>TPnu%19nZ2RFyZZzZROJ64Nmb#u5Tbqoj^XRZYxTOZ?XY_H%m z!8g>bpWVAd*n$&UFdn@y>rNxcQn4u}zDvMiicbiAu}+}4BDq)6op8TI%Vi<nAt=es-8;1mdRE@-K`D!t=(UwJSqO`V# zSX8X)$81W3R)bx`*Fk{b%aH#7ZAD_BO(1nfKqQrjWl-Iv2sz+1X=MIp!rI2=p^1V< zqM_WA7;4wHpdHwcR#j<1B52vjwaKHCCUrU0v&iUiMEuCD8vg*a`2Hx|BVMaR3MqS) zM(<4(4$vFPfQ;Gp~$}7Ya3rZ|KnTCWPTng|RKE2|34o*no6hMS5Zn}`dp{P1xVgj7mYmfUq?Zk9DoQ3i* ztqIi7dt#aS)rqZ|mEo~}%x&@Wkl0ywmKe&*+VM; zGpdzr!ipN#OeR3fe0{*O;bVd*6;e3TTb~bSx{3{%y<6)u{mY5x3{*6K_s$F^E|*X0xh5_DJMGCq~dEy+6zyD zKik~R)z!_p@))8GRwFH>F4Ld;hFIN=)Y8~T5@s_y}^kTAwcchS_T#Cg?TC3jZN<#Q37#)I7OC8oNb{&m{DI$u)j^h zHdUH#I?7&7%4w#WStKQ?BOK@!ilF+_D&l%==0<5J0^j3PjI~P0t8yN&)wc+vHKNq# z_?%nik#(aRERrKhEw03q$N)kFfyHR%kCjb&V#z`iR&Dr>KV_pyYU=Y#6mrT)AKYrw z{k6=f!fFMWGF+bkml0e_SND}`-bi4>Bc4>I25`W%CB|`YYLcX~G>bI}H6Q>1rk#E9 zY_=|+q0T>-x|-bD-L~6wZIQ7DdXbiWPsgq(iPA28w_zo`#^vPwls$+A42neo^ve=? z^Wd}kD32zl?&^C;)>V`HfTB8zl@F)>jy9$61kkPB@s8Y0JZnWhqO3O7yG|(rBw~5a zWZ3deHIP-dxC&JUag$E(VAxHJ?p-hGi9^?LY3t_WJNo4qb?G7oHo`yPsnfc>yt|RT>o|A&KkkiZ7Fy z7{BGCX_iR9Q73xH=9`6dp~o*w>6Dm0nvncWmbQH+M0m;zla61W4g8?E;Hh zv#M(m$kK+CW2Psa!wXH=hbJ}bz0^^pcIBhlUE4_v!n7Km+^d4VfJn>F3eKolhmt77@62rAmiXyC6GAmt0 zdSLCZ`2)4ef#D5g~v?Jed@c)YH$q$jp2nlK`zjYeMhrgFRqqh`a882Rc5t7ZO7fT-xuN6xkc89zBHBPfp?1n5U66=w{v-b@GotU{2n zQ!2;{uJ#nDJu?|$G&Gi9>8-Gw;a`Rr zQ}bC};FQ5KtZyFaOxr^c4SPwc{TQZfSR3QHX$o488;GN3V z!(Io{4aC9cxO5Y*mnQMJ%}=IY*gcvg)RlgK%g8mNOj-% zP9iDhuiBMn5E!u0WkSD&mzkGa*lLB$on46zwZ0Dk^B-FHcM>+D29i;MhYkkTrZ% z3KZrm^K0?I{)<3pL9VT3l1okI-CHJnnv~D4t{FQP10*jA4YSP^xTugC7T=j6TQl#L zSSbb(E0yLZk9sI+RrBApFcj!!tF)LacP<~x8Y&Rr!lTsnc@^{i&mZ^s1?$904lcgAYoNeY^hZLw@@;M)kj%F=2 z-MXEV5x4*~r^cq3o^;dv2kDj9@=4>PyXD^IIT=Iv_oE))m!$yfTv@>^v@L545lXPn z4#6LBow5qUKW?}hZEzIjja&WGcMY@Jt3?`?1jxz>ZHKh?47KTr>4&U{rT+ldPX17$ zhiG-J4Mk0GR-n+}WnSLyc&wv{#c8-_UH<^M2UF-zTwgko9$Bol`(o92;_@_h*NY)& zCPyJz9Db^0l_{9TmI-T8Ww}YzT*(4W;}O??mZ7RfWpK+aauQdRTu7)(OtF&k6a;~u zM2!xZNnucF-;$Qv)($q_HiF<%^KnoE_Klz&O)I7k87J0Q{{RhRX)U89^B=F3%Rt3@ zf(kLn_34Jf_6Fcjm1rX5ZDh0Gp;^)DuF9u8^{1!91?6}ZHWQMZM+}}OZyPeab4WW` zTcY(iY*W4r)Y;9W$jEl12)5PbUmm_>#C_K^=Sld{^0;gV@j8b88E0!_j7wJ>4ZVnuBfuPgfdDPp@ z5RgOzElpVN6fNnD(qT=Xo!?J*Zm;c8j^5$#l7C71l zM#??qfS?sQxhpGXfT-Cd zszE1XswwpU0Im*noik}M8{S&~0F1NUZzv;kI{A}$^rA7(X~FKAGRgNF_f^j+7mnaX zX)O$Ea-i)h0nNT`J#j4Mrr5fo*9**B{ak-d6H5|MOvnkPXtf^Me z$JXl2SSrW}Mgac+a5Zxqdg1>7r6~?`EDfhNR>Ehsw~|>%uas2m3PyU zoN8p1=C-*do<{za0PF;Ql5oA;4+)shzaqB0x{1}4#GW;8nIKt1p^%!3q( zJe|ByG*iQHk-|{@Ht;G_br}yzRMcgF_ZCw*lioI4@g1eS^8oh^wIm?YF|_7#%ur*G zN^Guangh&Q@xCi$FE=4O9ldW`?UF+w3iKoO>z_tLzy5_nRLZ*^IQqKvfGP^ z8SSt3?OKR)p(3?Yio7_WXGaTVam=&3#?Y(^RaulW$y!x%(-3lsRC-9uiHy;B=aQhP*$?YNdPkE zkU5RDI%2KJxubG8c+%b#g5$`G5tW>SMrSqL2?Jb9SdrbCj!@nCc9>1XHuQ2+HbF|T zK9o2a`P~7yLEsQgX(Zcr$Y=`^cQR|1I+h_5mS^ptmdBqoa`7_xOq*#+^v|v#uacP` zv?1jJ7ZbHtCGbC?kCBvCu%63h(?Wk2JLTRpe4=6-?Eu8khPc#$9Ew_vr zt<)0Rj(dxfKu4|_;Xq{LjN>J~db(_s0;?$i<*izu9Wbdr1|LWwwMitAe6ukT$FLVd zfxc}u#TH;qG{cLdJIyGyP4OsZm53R75(c9Kyt6FAls6h(79!ZQdAAr?7Hz~(?P1cM z#~C>rLRZ{TzPMY9!&u>UGNg3|s=0Ob*9ErS3rOv4?X9OlF_L>mAV6f?BXgx=W6@g? z*Z!<^F-DT_fSZxEg6od84;*orq&l`$&ZGELVVBY7gn5%QCAv!^+WkK3gkpdzh51^$ zMRmhx={7G|JhkC(?k*l?M@ZlU%>hzcqb+JqL}IB6K8Nn3hId)5T*t74thC(33T2S$ za9%`BqZ7&9wdK;n`=jqJ!_=-?VO~Z|{iE#5FQ(vBxEtnEDF-s3iY9gFFrQUn!-EU= z4Yk7arFNMkiA#A1$cCvHJw{@y9O)og+`LidvAWa(a{%BpFl!P%zhREPa<5gb6pu>i z8w=J=Fj2bVQcG}yXeez3%Q&8()nxp0!ow&Mw1ZRA0>{eFG=A9**dqC0u0P-wrnn-Fh9WZ$(qJP|c z$Bxlj*m))eYP(H#nu1TI0nWH7(9lALE%32u)h97{)tC&GhDv>XaiqXvj$Sm%JW>Z_ zRCR63Qfr@~_SX!!79pPfuWiat$Xui>mAQ|yH#;e^qb8#QHNv$+6zn6oSGr5E6{6Vj zBxZmuXhAykt{1a5QZ89RZ*j*@1hExY20r@cItq$nU82W>>j8Bk7vAax{gxw*}0NKv}(F^BAMVpn;en@Z^;0W zgE7gRHcecpI*nCObLcpJunZoXS zK(J1{m>XEk4%PXjXux3J(i7@>;Qs(GW=u|a<+y|-b&VuYDs)3D_r!c&mq?ikgU@2{B^CZx=LkY0ot-N5wy4T(zvT{gd!%*!!(jS@V3O= zM@c*CGd0)S3)06-oPycoo~X;VLLvkZw2Xjqr{#s#O`QXekc4v9_N0_73+N>$ia{^0HMhRwv+lz zF)!|4Ul$Tu=Dylr@#Uh2#F3IDYL>2~6YqxpiK0&}I5Kh;ipk;fvN{p_K!qc5p(ei! zB5-Di+-$cn^Q#Q0A?+%KDMw?N?gIx`ky5dqa@5Ur8^o*{5LRZU=+#i<)W-R$29=S1 zndDN!6LlNZ6G5*}L+^vHlkihILUUU3QAs3C1EP%fDr8Tut{1Efp_ce1dn=WhqAx-N zL_s@O-96RJquvSMn+f;-J9yZv=xj-t+q*Pa0jPMhMVS(SNlJe##?V&C7>EjH; zcGWc`ZR$r%H)$mT=#yDqFVsJgoY3v8WEMXurk{ozz#1)sVRsvDjaFEhoeQ(phN7E+ zp&y18W|arXrKG}nt>M}7sByFq1rKasdtfHTe48Ey2p(I2Sy7o=eXA8LRM71!^H83k z;+gr#n%HhHjkmNDM-8(GcWwXzMn@sGxoeTbYfp&=SC&uvm+k`E z#cDrJn3|%9jmG`^dB%NA64;O4j7Kc7&@dqF4$9dNd^*C?fJ@Dqn+KBfhl=P(lEz7u z3e-A~YIoE4;a(DDNdS7(u27=?3JIjd#wOg41j zT`N6#wn^ngX(gujkdjL`%*2DOaM}8JVCX+OGc!m8Zco}qfVJ(Pf$`2_axBTMI6z~9mTBy-)@37M{Van_S1oCi)>=E^Wo6_- z^0GuyD9uFWvyq2r8*`~z&}2RE9&NC$AZwVowUR4q=wnru;n`LKC`4fDfD_uw`C{4E zfi(x*ZM^f_naEXygH>{O4a2uln4rTn!6;kqdzO!Yj-jQvft}ZA1wxu`Cp!0g>4fN< zndzCwTb@gb@yh$qplHtEs)SaEIvP_8{L#A-;qr07tdmAr=(Ha=AZkJBhD=~>T;l%j znF<)hQHhwH@zF&{tttNQxNL2SubLR2la}J*@$R#CXtzo_LwS`&uG+x-ay+l6yAznNq4Gj5VPRJyP~E7WSot_Gj6kb4WONv`C# zSyHVX1ZXHKDm$t8R|}mv8^L>vu$B;Qqd`5qpoV6XD4YRGFQa;lK81rjefCU;kwuqm zh-Lx76xa`N1Xn|*AFAspmRvhIFb)<#9#OQ_mbBOXF!AI`BK^+|Wroa< z?JQuc5lj(MDC)OK^6I)lOBQ{{Z-O#M{%Nw1)VE<&xS+ zews;dC=%U)3{(ahEeSXo+TdMd$vwF{%MM4$e;saN3=&2=JD7WVR|f!m1Lbe$<<%un z2`Zts8fJQ8j|p&Y)Dqv7zqPeO+aV+nj9Yz0YT4I3{{So(k}O}1`-hj5m|JOBLkNnk zH&m06{y4hR;7viVmPxHGt)Px%dEtgRJj%nmM()fi(aqUCkCNK3-Avw8 zjSW|6%#)=7_+na=#%RxS{FIjgz-PEdECsO3!oIrqbvT?+Y?knj2(>S((iiP}$sYA7DnKP- z733vVT|o+`r?wdZv~Qb>ws(vcQo}dcK~mJrGY+1Et{JqAypzWbl9e-9HiVLQ7>#nLu)=M~*+u>v?kkw2b7wP0 z3WMddnE?$M10dPdQoV4UWeoHwf5}88d%FllyxWNgC|175-06nRC=;x?561Hn+;LY- zyOWffP4Wd4C96u3D_rY}>Dpci^ocT@tk+Fl@8MfV*!9khUzk&-3PvFD%%9~VD_^RW zz=fKp=4vY%{&-n(29Mo%%ZrHO7T1$4#l>@Y(_kw~07gJycTosspFR)GzU$^MqrauR z<)T;KAtX|(@`fUZG4FwIk&+(bWqb5#q<~bM+ot+vD08JTmb?X{t4XDr`r^}N0=SQQ z3IWuDeSyJV*es)X>2FBhN?Rz~x`Z~-N@jiV95ym^63cTo{e>Wpzi}XLG{}l*x#4tz zwe0HelSGiI9#&v`mZau7bf>N-mNG}YC660?E?uEUaiDWo1a;QCeX!F2fUfVGX<+cMSF%=DS^<3EUgUi+9_Ei-m4=npfAX+u0sVgB~r=vG0#2JFLfKqZiQ6D zNeqUhP*W;X6zq_&1+DJwK)JJ#qb*g5=~fB-Bn-8#0@8ee%$bfS?ip@ATA;)OvNot&MCY%FiK*q>)}=q2*>> z)eLB$Z6q4|;Jaf)BdcycL^5rv!zm3Su%eUH4{?IigC=#!Ndz(dQDqkKuI;<1Hs~^^ zy>UEcrX6V<*vfer1d%kzp?q=AN`n~GflWGMvZPdKc<>{)@W`#S3Wa(Ssxv>I#~W|Z z5)-+VViSp$p}_$`A-12?0n)X=85zrqce6;4DU?e>i@UgzOB0_#Tn%JtMqBP{Pq^;> z@U&hpk1)WA8+~enM0Oq3b4u*pOfH*4r6=e%{{U}ECG-s`TF9y=bsIsT$WV|q!07hB z&@;7{MRb#nu;e3T&&ML8f&)w!U!9QkmNKw-SA zZ^oIUqRg%Gih?QDr(JMV65EiE_b(ii+46SpD!^4(y<9YIc)deXyJV0Q4tF%jcwM8sCj?wtT??%W?@p9&V)2{MzS*`TYBGKK5Yb z;bXmN<+uBUMK{{XHXL`WhW6Rx0^ z3pG%#R3KNVQCd{zLy*g^H+D145t`rXxgGAJJ8Ew($8zMkvGq7z>Nx_)r#*GU*j&bJ zoJ|wTzqo-#T4!TfM@rOE@#k&BKek|`&GYTITe*gr`-j#bMX&*^1)(K5(fTHMRv zk<|hc%KJf9T2R+YXIwgR>=6jHWzJ3YD=pf27^zZ(15~C%yDs7@fauQb>Nex=?j*X3 z4YC4UMx*5nv{hmOt~#)#5qpM2f=MnpCn5;aQob^3$HuBDxSqLG^v?~PG%IPjJLSIN znm$I@tkN`A+hURwdM-krC<4Cq*9)z&vx5DfFT-*%u(pNTSUcp5if+rcJ-;c>3-tQJ zgk_0#XRqbu;p5&RYZOw;Gk8!cs}K!qvZjOIOl79b@{yh6?e8wj$0GehclRCEDxJPytZFfj`GShWi4zGgrpOh zH49IM9kjrd32{6%+RGFaCK-zfq&rj;6rinr>47;YrVDmlZ;aeQ7i22s0RXPzTQ8XF z?lC9ygLP!?a^^d0O@S*kv{hvWgKZ9PUu;vfq-C2j_DgjI_{C21RHpbf#dPaPur(QZ931)<;LTlu0BsGAIQJPyrYsk?IJi?Z5)#ufCDCsro9OC!hL>gMKa8l=QDpNCmFV?TAIcK3hnf7YWw0a@}OeP z#r?Y4u(+PL-ZIh2A)#YhR3BVh7i6_mK}&1oz zj%$0Qx-m?WZ7R+qATH;stZTIG>4BhfL%6xTg5p^PxK$SI86tmYqMRt~x$=gez#x$A51F%M55CcLQ$hw=mMQ%A=ve%acqT zSy|10JBl+w5$vG=4Dq$J(lTzDh)*adGg{L+>4Uta zjGJNj?mFdI$t4*ekTkC%h5%Dq51NOjCzc&5EAt;r+w!*qqdnGus4SM z1LyREAerE8sQAt$u!h`*aUJ0YGk?MQgrz0%nzk+y{Z4Wu(>eSSD~ zk78-2sCS#==Yrf#V|GB_wWHcaLi8DSj+ketBh?xHHstaRG!nOzv7;$o-nHq_^}x^3 z3Dt#OA=X6P-OXYT}SAjSb2fEi~kU5-UGKIWK?{#SN3cDxzR6~aj>S74N= zd68MV(yle`>xIwB$j@bK=y?%iCiGO1ND{*sGy~La{#ee3PE3C*#950drn*9AmPIj& zlx9;y+6I-TGRRvA4?h~qdkBO_xB~(Q+`t@-8ku@yLj!4=TOK~v@vWqV3r4BBHfEvT zMSGQfDO_d*;QDA12Dn6&LvbRK)4`D?bM7Aa-HpkW<*jb-KjXw1)K#REfCFsJvNX)% zm;*u_Btkx7IbS7LqZOemwCH+gOb5t}{c*W3HHz3<#&2$KvIl{ zH^a#kDsB`?%_UZ11#6KZsg_+Zvt=argXFDZoh@UGhi0bdr+D`F!bG9wjWiYs^(CZW z$o~Mih`CXQMANQWV3spwn(nvm-+0cI^Dfw@wo_OS!Z0x(Bkcw>$^G8Ebp164xWQ}%jr~5pI%zt-DI|lbkojBDnsT*z0Izl3>2lwxFd3FX>kimmqG~@3003hR+@Sp z4tS@V6%o+gi!T6aHkI6&Ztl}@!s}^`3@;1}zF8%e<(;xZGYkfXhx&01BAF|BJB1G5 z)KM778V;1x;fh5VqW5#jW#cH7Q{-aVjigiKkrl22vpOPN+s|W8;o}D0Ev*X%RlM2-&Sln~9z2 z8f`29>T{+YDIpL>zAkS9pjcGr5-H0(Q#qksA5U2Vv#~P5n^n$0)b+t%=D^Zrf47l0 zymHFh8&GoBP(e6(ky3)c6=^gq_dpn848aluaL?{i}NS7Se81OVkT1IV1*; zp{nOx@XtzM(0w%XO*P~+S);DyB!Dvj2^P9j86lY>^NE=QTscqpic3>7Lfr*D@E_pQ zVsXUQw`n46sRa1fsi#`fnc-e%_8t*B_Q|fLmP@Uo>4Q8;(MYH{iuA+h9*MmiTG(;C zeY|Gv7+*XnLn@rdUeS^EI4i`OLR#KgUqd3m6w2F@B-#U=r#&f3VY8bPTB1iJIfip? zVm9`nyQQT~0HLWKzL*a;K*~{NE)VUSOUUAmB4j2&9f$>nqd)bg8%ZQDXFr2{pK9@z zwz11}Q5pfiW09YwNz)Kmn?*IGWIpHRc?OazZZ=3{D0eeNm8EDXSY$;s7^ZWigw~TK zTVLNrGG5BwNm_(OAfh-XjY2a4b2xnb*O6ZQ8mVrVj!`_YK{`npbdYNuR5Oavf7cGM z6w^n%A2B3cDVR?^taF0Owd@J_>003ET(EbX{EsEHKTPn<)G|&e%*dvIR+=0QYF7YC z4lKCFf)dIJhJMp2PzXS2+z+VF6Iv|t2cG2Phn0rL$5_!&y7tt+N(}SEB`8gDb;aM@ zLvJ4+BxX5e+(L@83LNX1rk!y5RU+ltN+f~^*`p?KP;A=AxaI+-bU2rI8?2e0Q7^78 zZG;H1#IgjOO8k9-aM*MRpj ze{u0vE6Y>P^1P%n+({)iqM98&hBJj?CNE_zuNIdRnM>Sx4}n6G9b^@zdQzB8LuEc{ z5qIrQI_~!Ia*kO^S!Pp`)qAVE+tVFMsG={Ebv=o-Q6ouNA{*pYT#6H2qM6c}3@d14 zXTITAGp*ISIk9E!-Bk;?({mi_fY@?pc?c3)ON)r=jKNoRcBvrH)p}PF)}*IcVpg_% zRj`8PU1hrfDwBq=ZPf0Z#c+fYcp96se{n(kt`GOM82}sdl?Ck;5{u zAZ`onbU2%3vh0t@z0@}i6!Gjk$fYuG8&K3!TH_pOJr9My!?%Vi`u)q03>dVQ)LO97HjFGggtakt?Drf-q zI(uOElq^_+*Vq@DG3`rmX)KF)PoPy1t z6D(_J%)+uc21wm>S`XB5OzS)`8)0C-x)*m-g*1;fB#Jg!Zf=13V7C@zh&+cSeFfBH zL;F`V1TQA)AvqDB#<(*Bbv)zjC*$v4+C*8Qx!mwZSnsOpj80uO!lfupmF>U5@_fVY zj7M=ApzzYFtN;gN4%*b$8%Bv%WqGR`^T^F_dn>GJTfod&l;>5~;fOZZC9{u3pSG@f z9wb7GGeq+cT!JVRS8J4DMqM$^{;p_ui8S|ols77jU1YgZT17Pls0A2MZKZX^bEe#} zR#Kr0C^=iJ6Br_>!DHN8UEN14jMa63xm!hrt(982iN#tF7;imz)@W86h)+NHawPPm_O-^|r<{{V2s z;j)SCOqVw6v=$pyh(d!=(SWC}Ha=~(2egZ6_auVOPpXzHRxGp<7Vh1kT9fd{WEe#slz~|6ATIU?<_A3eaGF;}d-f9Z z?g1^2Y8fI?Te7Na8P=hR>4CqL{{YAqz*){LV2135Uyog3@C}?`r3?H0lkZHXg zUH#2%6qhEd(@-#1Y5@CcH0ez6u3IUVamRhk8Q8rWyzhh!NLn>Lb?Joa$~^#SzsXyp zL2i(Xc@LFc!!gdaYGtOFe9L4t_(85d;oU1o4Vs%`RhP!(vJw3>>D!Ig##=9Nj`Bj+ zw?WoYr3{mkv;{RJ^fU)LVUtPOn{R@D+;^OOTr~IIVdH&?9z`>AS^#~s&l_;v893z4 z@KzFBO}^e^928op-Q ziSauUk;r!_psNc10JjXSnjn9RfLo$m%PDA|yD9+H)8aG0&RP|+ubFSW$pa|*oz5I& zR3$S6U^oghe|bU0yGFLkS*_}Z<%!Sbs4cI+V6Vv8bV0J>Bb-2$5r}hn0_MO}=2u^i z5%M{$yW}kFZ4wx!SCFlDz_litXVBm*lh-D8u2#N8W8BO^^sbl+6`AHrpL5SW+`-{i@n={@K$aT%XN62;k)OKb`8In< z>}~v;ZbZt9^9D**wCFnE%?1q>-Obcyu>e({uH&f78Rx*n6+%-okeP_$$!=k6&` zG{$+6W)E$+h}-ukRCY|fYylurqJsf^C(s2@8^5$r7BDZb81W-3PBcLXOF`2+xabVIk_V&@F=>9PwiiAcDcK{A#jc`^0 z-U6Nk-dfAZau%T(fiS?t1flswJxz1NaYD(&UvKdcSxE93E@qRwLkncBromeLxDC00 zi9vJp_s7K$@<6NrIToNBRFgn`dvn4}lxZa*T+cmmcd%ba7-RjUp)?zFHEnynab=h$ z$3EHQcJ1VM3(K8g=-BdN8p{6RG5@lbwqm?9=!yIbO87QPN%$l0*%vTAGuOszm z=Ulz_GixHrXv}VuEA1c!?j*ljkIN0%4>E8X>h8&!1!UfPn`m6xwLi}a_aTcYSuB>( zeLS%l8J4oKs*goKmL--u0R^k10k8F+7M_m!|VN00&r8Xur~7+X8p%B zlX9HsGb9sA<0h2_*uCu0N*y6z7>R^Y6k-eY%S@_z;+RC) zISTr8rX#BvC?2)EH}_H6Dx`4u*{63E+-s1a_0I~JS{#D*#>7c$d$Kk_d|RqP1J;7L zrvmCl+mDhsTa~e-mazcx>?G2lFaQkco|w}#=**+WUPW_l6tThta*9gh=2zM%Gs=d& zF)hDCB-69oo4zX2RgP9Wzye6h?+n0GZGIR;;lWF2T7E-`Qf?umI6@U!NZJO5pmoz0 zN)(cI%!ey2oy^eqp-@bR%QYyBrE!exp!+T`RmjHy$u9l0_dhB(v(hxZGbnGGrwW%bh1zM5xeinIreGsazERf^;0EzR4ow zmN?0js>hoTCsHZ_%w>yA+7<<`q_l-saAuHHsu8#y$0a0J0qR5-zu@KrH>KXdSg|2g zRetJf3h zsiCvhEWvU7jnolMX(3pu)RBnIvN|;|`EZ2NMGI(Sn%l!0{^3HP=m?<5AAD72c_QXd zXM*YNQCK@g6Rk_OWkmr@w*t7&TohReZGM;5Ody}i(W~r;(RVVndRH!(n=+xxYpIdE zZ!)~F61!biq)Sa3p+lFx0%Np$KP&e%HW9owcB^jX!kx`g)b`gbu^hqC6i)g{ZkcZ- znO~CL9LE}x6;yUEs_n*9B=rh|?;b zKK>h+jLqc)huYxLTU9g^uIk|7CI;F?zoN04hEe2^2{Hr~3RqBKC8jcTeRXcbi7-n8 zJTb5lAUV;7hp+0xrkf`WjRmchg`fWbX3i!7R4~?*?y0RQ*AKXZXOblLS2E8uv{+aF z0E#10rk%6|WHQGuSvppryY|(^za4eHd5L(?0VH76#VS^m{Xdo)ESt%*xciPM5#)Jd zlE_ATq^(J6dS-L39n&;Xm7nfgu0nZi;EjraR7ll81uIdigSQLy-=UU9F8D;gwu)Kb zY#VA_NZ8CY9;ec{o_LX@iF<23hb6Y(VYfiBg82{#ETlGsf(|yE42T@ea^Lbx6fD!3 zYO50-s-rPpp7^Rzq(<%wTuq&&r0H#MCdmo_?Bp<7n*wXkKi;jj{!N$ic zxR8wKXdf~2P}c#jwq&GWT3lEp-&qNT;wsAlA$zM@0&7rx@n4>w2$Ri;9v6hY7gu)@ zqR6p%TG}&D7+=&@ohk+&Ej~k{UjZez)kFnFtn#dJ$}6}z^*)V<+oDRDU+#~#Uh$-s z-B#XM3G#lIm53WhzIYgEA)0K7z;IWWG9Yvj6(t<7?ghJ6pNvU6z+5xJO5@_?ptN!)ZK{uqZPAaUlIt(WPyeJVET zDWi&LGtVJh9IAjl7Ays<>$+Lw5i=vQr)yAV0baNtJ-L8B442$%X?MxAwn(N6K=HDw z?fJ6Wbki0Anu;Is{G&?p2wF0dI7+bH)q4CecB&DLXP90JvTaG&_eM$2S_)Rb3_s6R z0%=PF3@d$bZR2ASMJYZaM|e$h`E}D7uP8Y~yv#7Qs@t`;=T>H%nlmG&K!&QLXGLJ{OjXx2VPxEM)}-v@|Q0x#BN+Zc55K zp6=pXG?Ha`gZ2VNShiHl*kfz*GLRgc_m=kvZNQQ_0a!x{2HLcxKiltszG>OJ2je-F zeWKtfJ84>GjJfTh$k*Q%Zz(}5lD`wpG(5af%_6O$w~>`pP*>(xw4930RjAaTGSx7s#vN3OYJH; zKg^?LcX7tTD{|jXNfR|m034K#pPm=!*6eI9qMY^e+{W`jz@pF-P)_1$xBzkk;hs6$ zER4mxx05j`LXo-L4GSH$QYd|JhfrqS8GD)@Ob=?~D4O+J0>J)nGhfTXct_M=*jkw|` zx|r4&V|GaBP#vUiEs^MS>x6vJOuQVWgtzwGZImw~PNYR00+Pn3YM<#HNz)IkwaK|X zxVFCIY~@6VDk}LJr+C~NqyzI4h-*a>GZHe~c`j#^8-1V%_8L7-M`+HYpzDJ=;Lj*8 z8Faivu`TjB-o8ZK6tGg+6G7>hwjKqONqykukDi7#3K?cm`i6qOl;|)M3=K3#8OJO&cVc3%-Nra!fTicbSKYqS5^?s91?}kbZ)><1D0Nae>_t#tlG8TeabCCLTT~z9dO;7GRzwRb3!q%r~ulC@ph zWC@|cX~3#EGTekb!tRP0iD!$*(^QkVlTo&ZEK5+iD46%#+#f42j(M)%dlE#fMqn<| zk!^yR&gcbyG9RmXw1hh+8X}= z+Z1qxnI?VH!Q8F2zanJYaR_-H6kuvp9)sbGzKN!Q^A<+?Zqe71itxtqT__TH4FOUH zM?AH_&XhAWX>Mk}y}E0H<(-*BNAl4?+QAECDn)U#5FKg>e|uZ;*8IJ+Hi;xgT8Se{ zvvjE-R+Yx@83$IytR;fp+**_bvleR9630LfO#QHn=+^;xY|}x<$92fGS1GxIZ<}e_ zNFW6j9~@C}B=uBhxft!1OOpztTSn~|EXA2r6F`3viuek5XIu^Bw^oxq#L6mJS};$k89jjNofw!6xT*S3?9Km zWuE^4h`pLcwqK?Js|!B$V-lK>0V;ccmRLG}^k^u3nQ1ZN(e8qlxFy9jPcL@SPeF+F zq4lLOH+{w-9yYl0AzkPW-Nb`WeDcF(H%whWM2CmYBZA!>)d3EIxjEB4I&{ZIvnZZu zhcA}i;U3T%sY3>2lR8lJ_55)xr#?+Vx|(*LW;;UFs%ky@4JnG{z&cUq zC3e$CA1aQ4oB+{+Lr`ZyhVGcKQ{(>YmeM46?YyX}zz5uhrz&NcpvH6L4SFQ1T}C3ClBxx7IX+QlGPO~1pgEAEJuy_;p&>Hmrw*6!!z4T8X;d>7 zAQcs*DNM0dg~=^8J8y25cbhIH5XK}SVl^yLMt}Mk&A_Qi-Onv$Eu74=2H#zw4H*FT z*DB|QpJSxV*9UDh_hbjGXwA7Qs0!p+sA;dR3(=NaG;v!@8|o4{B)1G=F^+|5KolK1 zd~q2nRBINvwvHf8yBB%|Ct=edZ2;5|NhIk_r}M+hU!gRl`c6?Nb^3_bAgF(JPS0Is=fjh~w2 z8q?tCjl1Ncxk=ImmLAkrVP4X6%zms-=%a$T;MLvOUR|tmH;~)P;E-chVV7{}>5#(b zO{*Rt`rO5D$w_MV`z-EvM$NT`(JJ=lG6W2;>AbB?me?0o6;dcp+=~O9R3BVz{Q3hrmkhaVws2fW;(!SOE(~j+Ca%L! zO>i>Pw|`-!Su9cxXuafIR=sD3w3DwqC}%q#!0OzH))IQA{pfU7E62HM$#Tl6(VNbvPHhD zwO4g?$kdUJZ=x-hxIaI;yt;}DwxL+}e$sBuoc98K@T)L4a$?UkjAXh4%Pwgn)2J+a zx?z=>!KdN*!){}m;lE}3p3Z2>t`N_80DFa3?DP$FXbi<^fE zB8uHIWKFxf_6@W`L8^T2~CWLiq(_cVz_9MAB}OrKV6v^SdGIHKwuwn0e9rX zEdl)TvB+I;TjYMqvbKWl%LIgIV<#=SF14u6xTdp~jI_)x&kt`s{{Yd>e{mVQo`3aHT3 zcvmWerEbF(1^ZatY`2x0xCrA`B$5t) z_P}ZeOxOLh$spxY=Jw&O3GGSJfF)Gb+?>}w-;OIXpjXNIE&TQ()lfBKgbA6OcJ8z+ zPG-LNU!Nd`X1OkQ(1_J-!>SPbhHNNnl|ArNNOzV)<~gV>pm`xrsl42wVLO{TTrlC2``Jo}yMI2rHh_+5UJjd+xguQ1Uy}=-{bfI1GCZA-D6g8u*=$3qt-CDDdSC3?x{3cfZ6w2IW{ zUu+Jop?mloz2sw>U=*}$09p>UKBl8Ft^;hzz?@dA#@x>(n*Qr1Ror7z-|YuV;a05I zq$+t1QYq&F)+rV24z)(=fbm>`s#^4d8nF-HfJF*8%JL9@O}8RhMXE0+Zk8r?0gdHdIzu%10caK)iJ zfo4DXVp?*jdy=J(3nj(J)Z6ZboNiKTRe=RtEU4el3zYnY!BS@CtX1chHMl?#L?oT& zpw&{CydfkHC&OOzRw*O_q1@4yi00xo0Fg@c8v5ZH48d~ItkTvyYcN6z2$_b_yKi!l zOsmrcAWfWj8sM9Y_S+U z`@C&Y7$Bx*lmir7Vrc}oyN)wE+*^iAjO!rW!#~sgIrSJbWXacigtJBpq8HmjMpZe} z(+r#gtrRXSc&iy;k``5*g`{MLr~dAh!#yT})r~I@l1S1l$OTJ0pprKdF%7cW$~2r$ z1$ON%#pH#`#sccf!j;-LX|!p9{{WyAF1WiENaThbpss7 z2_o>LZAt{+44Hga$e%6nM%buQMlD)1PuCTrZ#@U>jfD(t^yl}aUrb}4k zd4XdsNjVlKx&nVX;#zW73IN(QtMT9e0FGJY+**LK11+E&$fv^vSajg`?d7&kdLYug zafO)~0`9F>CO)7wFg}T-3^_kRvgCZgn|Ss>zs*GhXH9Vkk+i(BUH3C-6n-d5`50C( z1!+^MHNdjM@y@p)P(O}RtGz2t$EoSp*9Raf+R6K33zpm?rsr@1s2QEODT7E(_U=TL zMX3cqY6cYyJu<;iD_%wBwZ4@okb=gcg>&3!PMQOt!FrIy5zV`Cw^JkwAheZ*AXWu; z6PlenMQ|QlKw3h#W=QPjx*e|(pehdK2PL6BF;1yKjGe`#k21Z$X#+|L3gDFu*F3A1 z3*Vrxo8+~@a+3~DYjBE?$U`{oWAk*TSVyVkDI2?s>su>hBTB&`QeurrX3H~82*mf5 z$|;>4rRBZ<019TeaOy(MBFJe*Vf$d$OttHaW&~)DV>4V`vK9hhGDE#d)_`a-t{GS$ zWn!{Oq)KiK@8*=Z%H?PR`*h0-y*PlZkh#t%#cQ_Rg2|VRBMQ*_)8z+T1x8>a<}K#4 z`e@^h2$GIUtsE2~SZ@Zows_l=nB%?lCP-f%#ys zd2a=^$coYHAt4N)EMh@Y#EobaV?**42#Ykg^VqeT%0yGhk29`jlmJkZN>dA#<_Bxh z*9T$8n~xmpQ!dmqhA7>ppk{sRj^?2wlrP*rb6Q%NY;7kF4&kz=Y7#aPxYQcsmwLD@ zpP!Q;*FRY40$TwZjk3tcu~-_{+XfivK;^xnOEHFT-AT5tWE8LI9)mzI*@P~g4|7&- zV~R9Jh$0QGxHT#QvVl)wiab6<%RfouZQ)yryK1p zxNs*8@6yd9S`#OX?na`Mr8KCnIlqiLE!cziKQ(&yx0VsYhFOtgX`{_RQ(U#Fpv7No z@+=?^a(pW##I!LWg*R56po)rDxUQ!X(-|?Sp@or3v4|g#gH|MFD_@QytxYkcQ=LgJ z`4n4NT(U;8I)?5c4&zVLo(lUUjI!p&t>ZU8@!^Cp-?m6&6lG~E`N)hhb6xsLr&Bo8P$Z82TcXOSP#$@EH=zC|&;y|H(XHQl&_ zKpSb$`rt$qPDM@PzznggMIE%8w>s@pAQ{vg#u^${O)>{KV!XDN>M5345yY|>*zJ=r zxr5Z_mI7T(t0Z3Bq?8v>hqsIo3Wlb+x4tK@q=z|hDH^ZUwBiz_l^Qm!NC}}|#9_0j zVzl7Z$;I4TTp4>~kB~*VleVl2(TcTnD%hs=2F;pcn@X zQ9Gma`F`QLLh&0yl0%XLXm^?cxPhfBhQoS6(lnevw@Kr=Pbl5-PWK&>P&(uhV?px2?#-x7Md z8!OpIlDC3r_bP9=R3%Z*%R^I7Oea>^NrXe@9^&mHk_?s@)mi9UbMDrZ6{RsoyoN>W zZe*4xj7B9!a3Y$eQ%?18$F~{q6{sG#~6HUTD<#(y2WOHAMu~2>>0qlY##LC5}Vroj73phWixyB ztd|pUR|_n)A~kd%Yb|NCSKAsaS3?5E*<*q!7>2k3WGurb2Y0rZrk#tG=+1q}@S{L1 zK!2sbFtMWfqW_QF|S?<5&UCAQCo+Zgt3T2%~<&B*qLFbA{+2&KV zXsK?l%zJ^MZJ_2l;j+xhsU+=s*0YU{j9O{~n?FOlJZz|P38PL-Mqh>( zv?)gGaEP4W(s41|EI`}|!J>gfyKN}d^~Q~C)PiwbU95aPzb9&iW83ADB|XZ_yGRwv zpx{JP4`#(VPIC8*MVDzYl>NB!W@?&H?WrUkaE;9moY1@+-1h~N;sXervQ4;vKp8Hh zw|7hxnNlmGMQwF!2NE4(5iw23pjDUS@xp6q86q>Wm@35y5=&DdYHZpG$kvp^QBT<) z?pW+>IE1%`03@6g+n>yO^rdOn(-ryU`2*53UvJyVZ^>F*A_Pd}Rc*zTlpt>hU+dEr zieh;`NaEtPlJeo-aa21Yj0OrA*F*mRk6d!1tx&D!6kcBu1R(8{*X0ap+G(9I*@G&v zgZ9cSX;ctE2KSX~yEYqpX|#ja44PCJY))^spp%~>J9#cZhyao1nw15&Q*LLV!nB$i zSx&_v;NDmt_bx6+ki`(FUf-FHL$;kTt$N@Ijwdl^J%nz}^9cV*1gTQ1!_58`n7ga<4v@>}x4UmRxQSj1%}18T;|LsuruVb+9*L+{I5 z-B^aUjyW|O(X&!AdI8qBN0z7yf;^VxcBa**Q%v#D{%Kni zIxJmsGs$%8X#%`A3aAo7yOjW-*F%;moK^S}TCg8X@Y=?*FnP9yxDHE5isa~&&+*d* z!wy+a+2s?*Y_D5-0Ko-H)NQY&Dm272%1Ep~ZVOeO{37{4{od9jkb7HcIn?@MZz;aW zqTNBEv9^ihS=o^*PYRkY$FJ%&Is0_R((o*gm$r<&)eNfOT!PkVCrg0kaG6LGn6Uw+uWopH0&74 zKX)=hjY9^gpzEe9DR2vCP)}cE9krayIzj?GM8!%9xnEwDQ7ndVtz%DcGTW|2Ge5KjY zq9Mrn6|)S%y7a?mR}7ZfpX4pl-t^knf02J_k8ai`loZrgt|_$uz`rE|%)db zQIH_eW=<11W62&XC-M-Bw|44lw@!lr{KA>G`*zZJtQO%&NmT%sde?J|v>gsPKAMJE zDMqeafOyalm}lA@BX5zI4$vuD8g<3~T7*YR32^x(yYpNHBrSHS4C)4yCv7Y5hS$@; zy-M8c-3~FWMY;%?dme#_BvzSdKb|toHqA0&W4ye%RW|S(6Hbk94ff@a_-QS~ZkHxU@H~`MBO{W7g7UnHh63Uwv8yl=D3(??~TU+=d-Y+4TQcyp;unpJ=r#^%qYHbx ziA;}jGmbf2AX;Ub`)BdR)?iQQO0k+7IqqS(QzX)*Awr?HI)hqM@Y5N(GEzmovs;lq z=zOYx{{U~c6*4&oa?CqUG1XvP5wX^N{NzR&@VVhyfM|^A?tT(~q zRr1;>MR3BZwV)eXpbC58bF`SvP<~$K$&x5;3})d;ki^Tlmj~v{9V=O6T4O@D?ce_dLJC$9L_Ng=^XYzx$6V@fj+0g&3QkYCPEU)sb8i7_ zg+Z3u0;TJbBl<|st~~9jXIfN!B-i|Pq&JSG+Fsb%cN#|DGM1)fdSM=5O!H+fDtI7( zPUJ#TuF73Rf{R_-eF^D?`QY2o8`Cu2E8{VnEAq*rK`&U*}9s@HE%Y$s z;yYO!#@nMI_XVP{3>4C*9Wy+LoEL3aTU$!9hB0{POmyGmpcNp3Dg3b0Rltvt3+K7| z?<_lojDUGrlq=NJQl~8NkLf66kdHaXaomcZ0Z$`mH4Q;!H54Zm`Pv50t*$jW!?D$L3?}i@i@I)@)8$=92K; ziR&aC;dl1b(^eU6=yA)|S!s$qj@o~?Jc9O59ierV*bU-Ny@V0kX+w&vxFxMaC0=l4 z+2G^st|5(C%nLBDZrt+~6ehIKEJs?RozZea@w3IfFMBX-gNKKP4HN+Okk zx3=1=31XqU*i_J(^}u?tbu@PukaAo^rhUFhP^v!NtfY`WVf}qF$3(57X+g&)$B3YT zC3Z;Kg;7OM@z)W5CpJ^O5j=MP0OTH7p$w6(&}u^w(EE+pr_W0&xfQwRfRkOi7uttw zg(?W4pvkH0Tti<-d<^s0S{^nl)i8u83wc0bK&b0qd~|$m5!~d{TiF{9DOMy5WbZMt zC*GCRj9;=5DJER=d~L<_b_%O4$fHgnBV=_IY{hpl9+?aT;gw#6C%A&jHd`5yOoMbt zXvzRR+nD4rSFE)RmQ%}=FFQspWBP~zxZb{5qiw9hN|h&WM?Sb$l(;r_+q2F(YpA$? z8MWOLhX9dRB%0Q`mD9z-r^Fm zF%E7Kj!hkQ(2sm>m-sT-NQ--;E5^g=<^YgJRm{{R-EVN_>1n`?K3+d}0_RLBGF zQ9+sasl>syFU88XoMU)Md#93?^XiJdSfh2W1IMwGfcy{Ke4W44BrTx~9kCjLrmEFAMzMO`Y*tDAp z_`s)SN%>Dfg%2Ue2xEdPh$D^8;pJ6o$bmH6J!;wDfsCFy7B=$4s=foayE;=kC>r-1 z$;NIBEO>i51Y+Y~Aem=(L+SFNxCf+g#i0FSm zbB(DL5&q@598B=sTn_eH#-M!0yJ_(?#Fqsh;9lRAw7Yp_l@eY;Nk6uSa~SdoMgIV4 z2RdVIzD=CLb}k{U<`)-p7u#K)l|L`Udz?!+o=0q2`qoRfh6!fzNgX6th*G5bl13{K zAIXgSj@IXpfZM{1(KQsSR0i7gau}LWYg{tYR4fxL_?x~yaS__FM8VOcq28p|Q>`nN za5d@-k-Oq&k*5)EcSc>xSwL4q+z10DKD5F-q&j6=Yh|(H@2;-rhFN2fi$y7t?;whT zPUEJyoZKM(!SmO=rR9_{!8uEujFO@32~4U~^rENeF?>Lp;`Q3zrx4nWXSzYGr3z#!t%1%_#0wTLWiYc;t& zjA(X|TH?8F3fY|Hc^m1uMYf7PsGajXf}vKscF}%c#}&&^BWzA+FA=8?xuYru$XL*} zd1b2MAuA2U4*ik$1h!Wx#ZMmC=5EO<4#qmvbs1@aJ&+oL@7<|+$y=qRl&^0BcNYS? z-o2oy=yU6hl)Q#nhKG^mM<*q$l06_@mm*q}Do$D*H(?Tios35}KVG5U-^z%mRo4l8SRK; zpKOh$K#J>t@VWM6!_D_)>zg=i>{{MMubeuM+;(5nL#C#*zUx8Qm%Z5s5o+-(H+ zDh#@hmb9Y{v~2L3%-4YAp!}H->@zArLaygpvjRu}fO`Aml@@E*3+vdDMY@_do<~6% ztaPSkf`e09V!6(knrLA2jPb~`#@=A2J<=&Dvm$HjO8Qq6d9rDp7rs?ivUIn$LAj-f z*0nuBudWk^BP5_-l_qJ!!C58^xtM}RV?_keVBtlD-4mr8rPK`sFz#sxAiD1xfFw{h zm}atNCU>6YZf&BD()@&2sMDg8+AEL&bkC*)AxIXNe19Q+^Q1C(;!?t9AR3mXNL>IJ zKSmr#+FFS2w})8@)k_-ZT=K3YtfOfJwz5fX%&|%i*Vxn@pwtp5f1VqFa#}M&w=@zY zcQbYssVlWtL6`IEg#L5*8?+#)%0X(@=`8FJx}%i^wt-3k)~20u!(~Sx?ImHxlv!>B z%Q{?=QPk)~RRN}X9^;6;%a11D9sdB-M`mYd1=nOQrKrtNNi?MfU2w@f@&;fzn~NB1 zWJx7!XkJF8xnR%SO9~B6DVOL?S&O|%UQei+p(Xy=e1_0+8Df%TgeSIVmwid9=}d() z8Q~Y?Xe_{!loqof3`JDZpn;}m44;5Z4p=?p)QKbv$l6wv8ftJGfIBGN@fUnu!MeIT zVaT0~D_qLxbj5h!kXSiw^V!WhGyO>kR-tg3nwokHGJeHt!Kr(wF0JcoQV2l=A&>&X zqbAP=P$8o$_vauav-((~jaqOWgkrlw9LV=#Fk7JISu2YZN>oH!B%>md39dxenO6w3 zgQUjqZtdPnQ!0wXQ6mh=2OvGL4b;C6F8%=uuG?ZZ#)Qz5mSonnrWZ{PlZhnrwjMip zl{=+~)x|z>TAU2>X5^C^eN2E)ZfLa~ppN7J06~g&UPXpzxK0YxEy;v<$N;!wn`cUE>4@(sxeicBp04H|Z(SJM+rkftOy%#du%8`bEGa-Uc*1^7GOuFfY%YZbbx%P)EZf`E* zcv?BgAy~f90MdwRO>i}o`3h#^>cx*887!%A>$0@~ZXYdr?K)s)sBT2K2zg7Wxiq-9 zXJzj4vX>iv~6H@8IHK7b2JUOC|E6n+&WsP z?Z_B7lf7J@)xY$xV~wQ-Opsu);bfY9fP=Wtz33LLMNkiQLhFpRAcAAXE#>rA7W<{K zR^R1SJ|!nL3_2XKnAhM3B?l#GG=D-!jzPG(jqHu16|Y@!J%vfE`+t();J3StWtQT9 z37$`>VH>bOD7%i)TGuRP@=Z!+d$?p+?q|N`Qhqkop-G=?zf^*h3s>4(Jcy-n(DIUz z8KGWRihv{iA9Rj3?Wq8|)YN`>i~2`An>h42A0Nit#XZvUFvlfZX{zntuS5E& z>5FG+TnqRze7)PtJdvS>;de(FE(es8Q}Wid-KVx2vYP@!b|T=jG?$S=_aC?P&-2t8 zZzJ&64D|peauW+1(!rU;sM{1$n=4$Y>#a^D_4_0~F(eu9CcJTOtQlEAGC1z74uXR$ z@#k;q&WzMkT%WjhNgZXBFJRgUZQhs}hse)Q!J>nbvwH+c*Ux7O+r3LJ(oSqg z%15OzyK965n`EolD;b2JuquG4`$qy@KdC}_tzuTxEFj-72q5qa=WiX~_U=(ta@iV%_oq>b z=Tl4(0$i6HCDp9*!&vS2?dq!Jw&D(&oIhAIG#queD;FOcvMegVA4Q-w+G$Ms;Jpg6 z3ex^l$;mCN5C9cY#H)~LKr{q_h%}jGd(2#1y}K)>(<_jsgzW=bW$o#O`X}IQ!YA8t zaKi)7GtdBwA}OouQ|u|bJR-x32LAv7Vw_uDLvI8xD%_LhF?X@9Y1{0pQ;XwCIw$ew(UQX}H%HeWHXp`_GXP{jf!xfAbvz7D60_ zHOPwTO!62ywrn4o@kZj-<~D129UV!KDKsSYC#^8kA&4(eHI3{7l1F14;4x!HD@=%> z(-Qh7Hc}tru6RpJfoF4WE@zH1(Ak@#DD6!Vg7A4#N41f#i?uQ0~SOi7LjR2sjW2W zifbxKw$RrHE%IAEy~>#3kG?izP@+Odps4r6`ac0%L2s;W?+e?ciZ1P2dQYzKKS(~f zD$rYpM4NbBglH6%ic$p1r{-+H+G)7g0kOKsd-%6Xtl-GtF6Ld#;2PGT0iAHYq-T<+ z1NRRPcgI~@yCi-#D(K}@gQEZ{E1m;@euXb$w3g|X7)4oC9o2&-??oEbt5bx}A<~q0 zarWEUSWP{4W}3vS)GF{mxLoauyo3^N}i6qcoCkq|^mrq1Hgl4#q2 z+PEx9u?Tq=H%2>165`p=yk15rv5OiSQ0LSPS06PTiM`n08@U)sG-g|Gs1I(=9adr12*oZyGp_-bl#LBT-sumKA2L8M~%YxVy1wp|_4@CV2o&%&K=V z-L$Xu8sTBg56Y5vF=2Ic;Znj$p_qV-08twf82g+JN=C+!Bb)nL=HfFmTdZS7oDJEG z&2y-(0w~&okJ#JnE+t9I!jeP^sd^HK-G^x!dK@=qCbQ(E?0&VH8QJ5wBzF--ENTLt zp7>l%Q~AfplmdsLlC z!$euU0KA6&emyO$t<^0;3Px0h0-K#)nGEW1nMpCZL|#JE_R=e8DJldqGCuQGqXwr> zN_58Cuw&Vy`+Dd{3asS$QOJtFHrLFk1Eqa%H6<8+PyBS2PFbk86x>Mw8XSu*UEjwD zm4PxGA8}X~mfqGS*i~b7CwK09obsW}R|~B^5ZyeS+i|gRyJLV>S!&Y=*SjXIK-2K9 zB(v+1i$xoWw`*Uov~-X^%If8ml{7S{ zrlU-CcJM~ICUKmX9`jz^$ze0g3bG`Mo1?fi?p(bz&k3|_za;w!ZPx6ym808Q&i+D= zy1S05%xVII>x9;mq0*4thXEVO^`N3jDBL!jl(6}|4i_ILjMzBlz7nt2%Q8`RNh=+> z5H^qqG^V2+Soz5pxM3oninmh~@h!!6#%@anJ7gnLD1S|HwU!*TACZFE+mE?~%qESL zkE#t?gH5O?YlOxnhkArWn(pFTSbnilt=Kv^UCKcNEz4T^Vvpw*iNB+hKOYTeX?`zY zz4J=}SrJw`hLWL$91=3pgBu?<`5RhZ5&DVylFADuYndQ-x{Mf}y~@m^aAnP^yS2m? zT(nWTLU7qcfh1TJO&5Eqsc;D)j&;!KjjQrDYr#8^j!Abt8U zTaqMGULImd=a9)7D)`Y!+{5)R#=iJvr2y(wy10sKh~^5&V@fb_Rm|<~S`tk&#Oh$r z@@Q>2D~~9hA{2@uB#08mqvarhK}=EP4W05l?-^-t9Cxyal6}>iQ(6Pp(!Q9@PYB8Q z1bN;&lx2d}?EN*e?`^BxaJGCssN-nx(Tm>N}+jCOK z$VWB5@5LBzCBB=Of;Spx>43~pv@qVw9Pmnft4_jp5_*IA<30?Wlms_EPcUqppO>_I<%M5%*gu>Y6K-z5e(_%7N*u?`xnvJdOm+PDC$GROrHXiBhGIK1 zAOVo{Bz42CMd13@&Ui{sZp3z#EZ&DIeppR%Fdw9 z*AKv=Tpte|rNwUId#D04xEiTB2CrIRLSxCK<4+SMvqYB)s=eYFSZ-7XxdE8M>n2(! zT*j7@Qr)-7BW{Js0jg*KsmRn~JJccDJi5BLj^+ysy~wgJ?l@A%Ayc<3w;fMRH_kO^ zSEPl6$nI^Xb8cc%OH@^q42?)6X^LwSCwL|D@!C%e7WSS=A=uJPp*Ij0^)n3@8>>dn zlaa16#=_^6jjnD4251lOR8d)vXe1hnoUm5SqzZeu_-;iamQqVht9T1{1U1_1K%*^A zy)gUKswbR#56Rd;4fD^(NGDkUnl)OI8JO;+b)gu7zD}gzJ+vt;f<=4>)+&)A=Cm!; z^r6D;9|2k@aF&+kO@xpOL}gJN?Bi^kiZ|WAu$2Jqr43hb z(DlVO)S+^u{PXThC|+`x3`4zI04dZ0!E(!Q@xpDx`~@i_SU9nc7mV%_OG+IHIaj6~ zdllJo+R__7OkGJ3g^Dm(Lr|&xEuC`0xbhUe4qx)zlyOF}v7hPBkjQh83ZLq)%ew_| z7_)2km)$T!#S=SkX%Ua~{Gyd4^xd6twU?l9MY!Roz2p-93x{Y9-x(vfYXM!OI_aJt z2`d%3L|$4;yAD<<+FC_#kfQAlzb?OySa$nx2!q~xmEkXKrkch#x|d*CgH*Ea6x&0% z3`M4gOjqqI`>Sp$drulc3Cl3dU2D+l3gbO4OuZc4OLb#?ERe8!Wn?iSW454Fh9}0g-!-+WO^y-k}B&Kc0KY3@*@?knUhwfNNSBY3qsgP0M3(LceYq5v+opK|o>j{{TX6YcHER9UzanbYwPWbruD%tITvrJwnnyiid;lM zc?hK(Yg*!&Zfp%2ZZ)M#A#rpXZxaVt*b+9-ihzD>Gt-DCqzdPh=UO#|E~H15q;fJV z;Tf$Kou}b~vgX2_9`RQ)R6t`p9Tq`0L7#O`Z8H3D%L;5Q)S|Z)djd+c-66Q-QJ6xr zJ9r{qgeryIP<|M790@E-k>u*;&1OZ7Nir2cyZ3xS)6|_XuPeaHe2jg*oPCY6iDQ{> za!4*p?okk2%|RqrLzWNEC>z^2n(E$L&GJMHOlXmjT{57r!wK|2>`K0>R2Wmpj%Esk z_rd=>3mWb$fwt$KR61j|x+SJm`@;K- zf-4~u@R@GhMI@0hVdJPM8kq(6*AmQv6q2q-(%f3jHNl3|N43ccQ^?LmLsLS&`r#qS z>7-8NKI@9gMzD1f*&}aDg$k;}CRg02-06qv(gJo)U$_O`{L)4L030NF-R@wnYBN5S z)9}RlII+7}hZ}a>e>T%y+JOwfsFFZgLCma`>$q2&?ifFER3&nI&>l&jW zDphl8(2Vle3(^DKnLEyFlAq}=gs9P5v$d2(6;>Z6ryw^Lr(9ALM}d6FQp26No+#`s zk~pp}WD)&!NMwxVE39AvRv<2Zm`^R@;BU+_aEW-xE=`OVzTbcg-?>XWGVUKmVAoegLC$cm6Y~^SCuCa5H>AnBnk-x zkhzNbV<*&IF5C@SnC4j_g}hS+B*ojFXERQ%hVHow`H5KGLoLHcXT5F-F>NTxxDTH% zUwYx5r=A4q22+^(yOOc{k+$25c8GXGxZE9=IN6EF8fi=;z6VCPhWo`YXN+8v421v@ zu>l%N(T?IY!eU<_qg3}RG%lN11DuY3w!l_^obtsM7a}$%B(|4!i#b(~v?SS*S81kA zmPVa0+02EuxB?`PVU7V)9Lc)BF`?9aaIY(X%VjZU#@1sQU8)PZGYXSRkO9Q=tFhpb ze*k-9B-ND_BPByo!64^PdSROMGHi!!9n|pdSptFH3s8c~l>yY6V9G&>8@4FchW)}% z2|})-fSNT{l?OaR)8uz(dhd|Exr51NF^(C5e*%^A6$|>uN{WoJN0cR)yFN-)<}W5` z13+B^qjrGVm8MzY)_XAOINgR`A(wg8jtAc!=M6Q? zYOhVlJ-}#l%M7#RUJ3{}{{W})%A~bv4Cio03H>Y9n9pojBHrIls1Ql@DIoERjhPuHoY(WEO|FOh;R}M^053 z3*H9!a&gS;n`B}?r0JQZa>K1yt0t<>{6}j|@~McdLap0cQC^MnYH}EpU+UEqTyimO z%E#oM*6IAQhJCjzJ4s=YYET;KmJiqG<#`oo8u86wV{l~|~Bak=JAUmJR)fMUT)|j#smw(D9 zE9AH`L?DE=-JpQL{;HF%Sc}w*sFKOYCBj`q!O;@3)QS*&wXOnae#rZm9lXd(wWjQI@@djQ&2)Po(4P&^b@*DueyDYH`W7&Of6&e`$v_jXe#YjrHU8)$aeNS58 z>*JAgw(-74=BcI*I^E)`JQBmw~&ET5-v3aFM|mlgO1})CJ8;YFjM^86?~R zzalrbmg3;ZUjO8FCn&+)Epw9zH$eqTdcD$Qf?OTLL49mAR4eUL7Vb!2XqHap=3F8WjWl4c> zbD$k6df;ndf~*#oBamy+GWhPp1yfDIj+FR&;gd`dYIu%5#w#}c&DTh1ZX3Ca5Gzb) znY1Hp&i(zzamsB%NM*Z3calJA$_ptK9;T-o84J+@4n3!tr1R`Riepw3p&9#EEU;t1 z9*X>54Gp}8<=9HH4Wt3LXah`-^TEz+4@Ffly`!>Q8PXzKa*#5me5<`!@} z+(_-7&^Gqa)`ZhaV%qtU&dIWJ{Cr8e+T{``lvdP+B1JXKk)|TlQFP9t`?B44c`ep9 zbu1^3X$3}ESFU&oKLKqAx8(TS$&scj6y%8!WIJ6Ml&Z3WQPWIimIuI~<^JNHR<)R$ zxL|Tir)Y6n24%^spXtH=X+K2XdmdbH^Vr@AVwZ7xIqhP=e@^emOg?wjnS9$hy|#H` znUzdM_J;}%%)5x8_RAZ8M9qvf$rtKvE$-4+ol3ac@yoi5Yn1|;f-xmUT1>Mw&mPgn z&3$!OL&IbS(#N-jNFgXa`}MAM)|%(%b*wh<;}&^@s$?d z7c65Yl~6JY*&N1rlgoBAq(kJnAGhU^OyrB1U&Ln{omVYL8g0b%oR29Z&$jrRDXx6x zj$^NdnlR;oKQfbEqZHGqB(!v@KP-jY1V`Ff`r6xY&$@tr$v0KM8 z1GuJCU1&!`?~1i7i=$h^anea;DuhND}P*(>QoUb!HXwk$Z@koB1r#p#8pg+@AI-20DxRH6H zZzmo7@V$% zaV#grF=P|OO94!(X{B+q^3w1pWuZH0IZMHDYiSvcV**B!T!RH*YBeYQaQ^_yP%mVi znqD{U_#%bcXv0Xc7v2p)ah}npV;x^CMG^Wrv1`j~Ypd4t+ZgGZO_Oe7DYr47#A1&O zMWTN%1;xK2LtKQhnIkr}qB1g_tc)`ow;$D!#TBo~H^_%GY0KN%lWf7A4K^B3u1wni zuH472mBJ*|vD1)TG_y%^F71^q?G*1zSp)5C=)ns20hMqbr-LN{`7Tz{09M!!tZm*_ z$(TA;olR;6b;dK%HrI>guR_jac*JE)uSz_F`bVZT8EDm5M{)E)9-y?D(yg|JfLB}` z>#F>Lzan4%!4kiz%xx6bdLOf6rQcu6c6m=us%sY>^C)C^DRq_@pQ8O}1!;@#v~%^9RnA2T8%4&p2P@gL@x z&uq1A#a*W$p)OfcZLDtSBn_QIkxYpOhaDJjM|SAgaIv+#k8dQ+9CHfCy-N0gShnNZ zJ{Vm;LuVrVowCRZ!i3$$RbuK1A$1uLFpVO)MII{A;*09;5U+s@r2Nr^rATEJVV)T- zxe@B%&3(gpW61JG;w17$l-LLZwOO4o20O>WGvi9DYT%DudjTS(Bxp>|oZrdfWb zI+N>#*3&j|4DQqK8<=>9wvrc1xXLsy7|FIe)r~r;?#ye2N?AtVfY5!~mp7v3^69O^ z&=RJMRAGyDcsWLrez+Ew#)u+ej9d3_ovhs3aPVdgE#m3_}^a;=YRFIpbzEA~~b3 zYP9XhXNhT#nB@9SL43<^LM4QWB#oDL^d6*F*IZ2$f=%ZpCX;NGib4*^ht77M)@@gz z>4wXL7;CS%E+V`UB028ZtQ%k@w621K+XbW*BYd~rmX>^Rvx~_Df;A5mV6kZn07=vg zu)pR;QZsMN{Wk{$jULQ^kTU8jO%9gE2~! z{{UPzbpnV(eawq!ZDf*1<6|SoaG-fMfk3+E7M0Ht`s*&rqExQ$VaWu6p2M)H7)|RA_hD1C#_E4nKqsadC^ujV$kK+ILd!Ia zk%@=^f@Nkm1HbA+hP$RGlhHTYnyco`vfmz0D}Z7pVkb5wzd zak1(biWG5x(9Qn_!aNS>Pkqc(piuW1xBvG*=A``o(|uD zWqAS2*mqCJ!Em2K^z&Qp&50n^I*f=o*>8pyn>vEd?QPmwCx54vgBZyj%DMNc&m+^< z4c#L^4p)r*^qSrYx)!8k|=c_AB3@7o0>A zqRYo5cQ(kBjN1YMWyy;(R;IXi*OGQ6$MB6O5icP=(AN*K;MfZ#2^;gRPFPoz!kiGf zt{&ke*=&X2E8a-j6#Pf};yU>HDV_ThwBprC`HQ*ktypcRrA8*P25wnmI96SfGqDkx z3W_dy(>ymsZtR18E-kO;dtunkQnVQrIna6>RW^}0k*gju=Hvv9)lI~WLm@jT&VQ(2 zKcLGlO~>2(3RpoL)4YptSgphjwW3u$q1Q5V>xtJRv}k95%?m_eGQ$W3oOZ1N=m0&x zmJH1WFD7%Fwu8#I5ZkrMKm$ib8wDz9rkI=$$?P|F>eZvdvLT@>nslaG{&-y5mMbe; zeZ6aU0yOd<2xyegct5AtOj|H3)NpcmcrD|WCjS78K^vtckfaQNKhiO>(nf;~CC3dE zt0a;MWs$2AgWI$cHyVr$X^hfm9M2)gT1scIoPA80Zwdni_RFVC1@qUQ4cU0)a_Q{( zB~KDag|=?;Z3TjXQ&FbvFv@slu1#OtUv5M6jC`&XF`_jMDr=JsaZF)5WcQ-&v)S4t zthVnX+kDE@*u)xExMtRDo0ej^YqjQiE1Q5&2VJQekN_!_J;C+F^Jr#sZ3M#hDPAID zR8-n~m5nGzO)&Y&LcR+U@wZaitHO`shyWN+C;;cz173lIIvfRRcX5)ZzI z89NtQqRqAK#}{Hu?cAsu2vM0T9-uDj)Y6#EPa-5%;qI<^XcWP`O2~Gq_UzbbE1z~p zt{G;An=GZY_O_-;w|RDuUt-pyqd3n(akU6+qHUiGdp-H`$&qg;W+afH3gxCI-0)GN z_0rAZFril{HmDV0w2c~>hNiX40wDm)!a20MHe>ecyH??TdUR%`Dd~a#00U_iJZUAl z7px?4PXIInbt>&cTIcJF{P*mRlRb-?emXUKiPy&y7_77k5w)RR4!Jj`E45Tja%2AC zyOQc_tC-K0U0e!)1wx8ybnA|9r_OA?bpk(Y@Ygr@@;%G=qh%zTZulssb;Oh+oxGK; z{@3G~+*`DgUMW=y>9Ig_?^>UZH&pEb?gs9-Ws<^3p|yz{FD~BU-Ihe3<%W50HNc&$ z9}UBDJY=sm#hb@$BOtW^6|c*mt`j(hK87wP;h-{IOEY~+zSN3PcIi+u%k#z7Q?hNq z%kdW$k}o4~axN^{gmI)%lB^t7wH>NMet76uPw;cSxfF`h&fel~M6EY z*IZ9oNspa4KD>(OkG>qlP2m>wjCP%_r~2vaerzxE%W{T#drFq_v_Qz}LN-R2e~a#+mrX7cFFK?|A7x3}du=lXq^`T3N2pSdk$McN9p zw`-F{B}f!H`eC%%LaeD4K~sI-cFTu!%lKSu>DBJg#AmQ7Sg# zA|+R`e^p5oAmaHz(}PdN@)KC9TQ&O?sHAhUxOQc&7Q2V!aLvGxCpNt0*oOFrS)|>* zBBx@;NU8x%N4;>_+F*h151F@-o_m-F)Z9cN8zdW*sZ&C8B=qP8HzBjmBbJURX0^JT z%W)K>pqIJm`2tNUeK5cefAk8^EQ~^{R9o&lwN4iXDrx-ibN)i?^_C0kHM8DCYuwTTp|&zQm9GESgzIJ>J0#bn zq>)9f1La)0Qyj`uEy(BGmRE&Y1g-m@x#LzWDe=hr=ZepiPpF?KXL)3hUt7+yd6dTR zZffosHAkVXakZeO=$3A$Q4P9VESDY1)u=T80B-KII7Re;ESo+d?Zn9q!wGHLBBXfx zg0hXHI#iF(4)kS^7aaZn02^~HyfHi4qj=e7Dt8KcH=y)5P2)|tHe3O)3 zPghh{+(AHh8WILnu4fAkluXydHwXSH;&}$?qGL2_2ys*2P(2Ulhh4c7P+JJ@LMHmkdp63znR>A!gD?0{A7I z#!r%j1VA&PT(=6=nCMwcl1|+fIK~{Ljc)P+BSw{_DiIV9nuO;=UbxN|0ZsW4kM1iQ zW@rReNRxNet$Wq7I(wWVOgx#p{(cL~<146=Sk;)v{{YCe$ZTwdNa{uegi08sHsGN5r*0p$;og0a`<6bafVqc-e*;k zN0MR#BMLI@%fzJVJ!8YRN{@0UO_-RB> z+>)p{g+0eFa56Y%(?TRWE6*g6G|(BLN{Is#<#qz3?lm2C!C7F-UQalGsGV-ob1Lkw ziWVW2S+gT`Gs=|4-k^Ngy|>$!H=bDMlV|})jE$tzs{z#i01Rv+Xt!bZl=n{YaT7`| z6d3$&L!ee+yJ6@6sl~CVQpoQz=-emUx3*GS#U!z$eW54Hp_Y{(8eufE$oTEx2i-ik zAIID!h0Oj}18vK-XrfP$_f&d}urrBLCcPh?b9Xj;oy3OHklWc1=HWpV1d4)Ihf$YY zH-WO+p*wrat}gI$LRPqwFC1lS9aFdD9tF50N$kKx`BZM zU9`fgEy%wq#ax+`S-5G0f!cimj+$km!)?l;a*U0|g5F5+-AsIvu_*2aO0^UQn&J}$ z&gJ`h+UiNxUDi=ss6}O~24DacU`Zeh@Fd3^f7{oPJH>Jg(8_9(NXJO}P*$Jofc}gL z9rG7*n?I#ll=!FwTS~EJA0rd3DNu0hvjikl;oy<1%<@F4Q3Pzc06JGZvB~tyPRi#< zTyb*6B$C4=Y~4<+QW)wEfM=GNq^JYrLO5$)$ zZ@4ChmA8&Lpq8sNTf1wi13|b`70dJ|Q}g1NZOFUK8lkJ@&ZHlfndwYtxkl=Kr@_r^ z{8PmRw85iNZdsVHpdNy|LwqofSU6`e^0!>&VmZfU49`DZ%+F;~G zt|#Oqd#i}Pl$IwZ1XLPqMy*dxab0OFqIp(OxACNAFyOR;o2WqC0myp{PcPWa1c4)h zMurw@Q_9Jp1+~n2;{O0PM{HA;hTOohig_hKz%EX%$3npL!!0HRnU?#C%apc)DPG!N z2pMcsMkH&vXOI|v%Y#EK@SHc+@Uh?A0WGz!Gz!}#I90{(^48I~=w%<|5PW0u{9-;{c1O>phABpx{$NQ8FsfXa5( zl-x@Ep-z}tfU6MXtoap0X=PVvo63(PQB6nA)c5I(^C5!`$Z{NZWAA(2Bd+SECf z_?>X;fm(o|q?R%jbVWr0-aQE!E(_0_Q#|`lM;khYX4VCM;{N~~yqUMQpUVhs;y~0L#GQh){&=Tl z0wo5A?fy#A+QeG&mK)%Ce2a3ANjzkV8URfNF}lMGKTa#e%L31DA(dPxwgxs|9dh}a zgo9qV4=@$40_|&XvbUPCL;;K(mw2T&8hkJqQ!<=_Own9HW(MI_W@><{GBl{n*Vhr5 z8cC2C;f=iIjo}+YIW#PCsr193irn)2$J=pdbSG(B_bk`|ps+cwTvC{hMWN?;E>5E6 z;bcicNg^k1>i+;7N0$L^5uLfRx`Ofiw(Y%x7^X@v3Zo%R>55@pi1kE}(sE4!WBbe6 zr9eJ|*Lt zSn9xRX#$2Ds%TtLRAT+oP)Dm|kG!XMPo%ISXy#&!@SWS3iZY62j$KZ*9t!0`mS=1P z3Cr4BENcrwwVcV8;615KSy4A;ntNmkJ4|WeDq|}^d%z^+(_AZ3sNG63@Z6QkMF5-4 z119nn`#{JLX{9PLxuK;cA{YF0oO_#b8W{lWW&W?~6&*CdS%WPm#V#%0+|Ff)`5oL5 zp5we_ms6LfFTG2WDIh$57jMe6B4;Zh+^G)k!nL8?4_asO$3C>(7RFMr+;`i&d~w`b z!z{7g!@bwVxnyM;07&cUf%yyk9f{^kV`yMts7B~sMFg`oSe6~Y;dG&gE`fc+JTX~K z^n|$sx&Sp`Y8bK8(+skc3vx^2`1{4=EeypAOq9E4xips&iJ!wJ z@~8oGA82AeR6mA(_~p}r*+z2u)9E8gt=*xCstJ&zRMZ2yg1S=+oygEmiSOq}`gsqD z!)}s2P_Qie=a$WJeQ7ZkT4P*a3oO^EBvN@C!@5PLL>j2py5cXH9Tt;}bhmVASVfXF z@rDAR6(WcK06J@ly+a*lK;2r+aU5`2lyL|@yO;%#4_rLB1eo8stl~?6CnQfIDoCQf znq*I>TslpmB=3Mpp;;M=$Vu@g@w+-#EWNPV%TXd}o1RyOvb%!WCYVPm#pLr0*=V5X zG8xw_QDGB?Iri(=4U#HLZF2w-q=HbW!Hr1(Wm8INhcZW8#JAH3M&0pl-0+s8H7Zyy z`>BNbVgCTZOz90;ayHW5BxwYR5bTymr3?O$cGq5{Vp#cVC64}!fRA$|7r#j6D{#t6 zhafXkK)nvQXa4}e$dI_>B!c^Qj$7lpClZ4iB8CJNZ`4MsnLO6@O?a{NxqC z+UaF*mlE9gZPU6y<8@0d06x_9!>y*Jo2y0cBETat0T7JKW$Tt$i^|X>rEzIzeaNg! zY7%8uCD0WeqKbV9>!uI<44EFojwq;-GDRbv=_1-$_f(MI3SwE7QKX7|wX}<4NhI9Q zLkg4g5s(@CW^uNh2Lu+av#Q?0w=5Q^Zpt%ep`y23y>KwuwUIaFUcyFOmzvN>;TGNp ztZb{@R*X|h3_AKLB#|jO*eATWv?^Itf@5|YLC7;OT2$hV$&#@AhdXsVYiu%DHz-rNlb4NIH^$OY6U{jcAA{= zyji85@K9Dl)MhTUtCO^ruI}N`X@>b}3-mSi@>$$0Hdhfx69*`YC|FTNMNgo`QcPKB z4ct~yk!5WxYK(Wrv?vNLM8B?h)VMOSfx*uQ8xt+YiS!G zSU_G&X`C&@Xg38>o@4RGdXQ)GO`7uNYvq#0Ss;|PSxq+W&;!z*#}IgyJi;nj35&|I zzznQc>Rp#;DNfob(=4%EX{sf+My3>sLYC3~(-1Qm(=XCJ$j4gJWEvWK{w~&C(_RaQ ziaHoUG6DTXiqx){TammEaFOurvD`;ns3xaz+(_KD+n5B?1-HWokq&V<>pK^}k)&&H zAQ7NZN~knDiLc;sH!}m_)RRZyG6-@#bHen1_mZy)d26Wd z??XDG8U~kZ?u>M$Xg@4NTTRRt%At+|M27IMm0Cu~?yW0d{bz>7ITuPo@>hvBAZ3Ak zt3o$clu$N?_s`QA>AGUTo&C(B8+pw<0!^&7YEbLD11=a=N>|@S%UGq#6BKYRja3~0 zR-n@?KXXw6`pGN+lrn94gS74>5-2}B2C6~iO6SJmR1K>QOuG$5YhPhpNha9zfGw@f z%##S{kQW8yB&&2ZRi=Kpq@~CbZ-ZYI^GfmBOAm$Npx)#(Y!7bXm*Y$~Y^6-k56U{f z`&7z_9COL_F)dK38&K4m8g%r;-qcW54!GOvsBPX`xFHv40V)r$ zrWM+ORHq{Rqp+IT%ApL|JCmV5)Vg6Imh5$RZk9H!BB2b#NbUtmpxdS&If72d7J1bo z?^r&dZ&Z^eK7d#GVb+D}F7r>t$2;4ka#_wpuwZv9jI!HJeepk}Ha;tox=+W$#S57Z z>E_ss5bcnFcQt99J{VP}B{iBv-aqfV9ung6D4~Ce4duyX_w_c2wYZX~HYkISb`aL&+p9C*1TRE;HBWsv|R zk-3V2Q9(nOt}|)}$r5W@yKRsvq}N2dBC?uQ^vGpU1x0bsyi}FT@F4~N042xEJRFs+ zS809d;3;wjLci&VvE-}5-*P;Sv)a5(91sq~k#j!bnAM1{rZd5lIEpJfZbs*lND}Ti zQl^DUM=AmbwR^f(Og?ykK1!DiXXEW+w?Pw3!K6V#YfT6_Q?3!_SQd`v;qF8op=VHc zy$w7}H61Ii6=ZJa8=Uh9q?Xm>hHoW2pDFD*&~+Hi$AYTS^76d0@#St+om8&rfccFo z3;q~cVOcxl_*kykTumbdpc{u#T`AK{3^v)cjkT2AJ;JS`0}%vobyn^)%Py&!s2UUv6Bl zmU$!I(SkNA7TgqW-T7lm86XLHGF!dd%3UL4wLz!~MFm$A*Dz5eBOfbgaHtKrk}9)D zAYH7Wf3)e>3l2b#^Iuw|R7p0uAGQ?>0tTw;--xKgB_g+Cmp3VMZX@!^6tg=j9TtFA zn$RA(;)=WjLZ9MouAzSuIW^i#QA?dp=clLVfu@tQX2crnl>2h;Y+FUVk5@@I81evo zx*7wn4)C3uEux*z+`n(nV$ku_97I94;)K?$48}xq1?^ILNTR##xq#K&=H)Mhd{VO$L^57K6P zh!9!Ah_<%-oEFKIN%?Et>y{0{pI6{q{lh%WBWP#=*j$oow53+Lb=MsF`f6bevqC(B zw2V^S$L*lJFODyjJc`^i1SPe+yPjS` zNdidaq1-A>4xs)R?5HC)Q~v-2gM@xc(acgsCe#m@YS01?s@D@;K-&*x%JNt6Zid<$ zI3ZoHIXi=uT2zmlyW0V@n0m5Rp9YHJ>Q+$?n34ebRQGQ9VD*(Dm@D6N3w3)1rJI;7 z16D@{n~IG>kNq4o>S$>lEv(YZNKle8iGcb2a>Tduo(Ip;tiJ`F#j3=ULSvFCm5|hv zN@qYi=Z1Nl&>pPsl!RHdw{HSFIXnEVS_Nv7wfr#@-e3AMQ^9M8v$EtPYm2u{k^|*| z1xJi%Dk=wP!=)x_3ex?{2OVuB(c5o`ff6Xlh{)P9`E#Zylw1=qT<Tx|to z3O0N}ABHEU-4BKAqjSthcLLr?0fhsD7?Q0e52vPMw-rLP7wvfYH&zPDZAscZnM`x8 zq0C>!@;t!@kBH648LkSLBTcO(2|!eq zKOFES4JnarNMl_snCpT`Z# z7eQgcg+~ zKy_nxO3!UIxh~e|iU6-|Sa%Rkdf+_&0HISRTyYCv*0Rp;6_n0F+D!#>04)W3R}7R$ zOxqqkd71<>Ex3`C(!1HKuq{q>4VlF-)C$xv>CQZBB1sd11tU9YLt2qtDTt|&oIt<% zOXE4SNdv_0966_v90EwFujPs@z@2A1Du{GNnV7MzWjB@An~$WGX66av*d$XNhgNW5{K@VJr?8 z$_V|`1A3E98ot?Ka^8?Q4|{s56JP;kCbD%}isesr>x)b)5yLBRzeNms=%!a>OXO`YIg6ya zl26}wSH#LYNlw~I-oy1~PAT)THlUW2la#j~<)4%+iDG>N>3mwdnlCVen;E3T8*RTVdK6%!jxMiCJxEZw)g_h@( zF}pN@L7`B`FX`w#X^U;IB+`Bfw+UqPQpVvzF=9Yw*mXGqE0#HvXr`3~b2yGB%1Gk` zH1P_gY{H>hL7_OhOh`vud^0ubUEOC3*L?Cg8$fSQh{NYT#h*hla+g2mp^j_Xa7DK~ z(tvgaQ;=XgfNUenk(;3#dx<$q%bS?l7T!4vJ39for0wyc%+&^XuU80wX}D>xubnJ` zkc2N9xvyyHnXXjR1!CkfRQoE%_6s+Yk#tDrETmSFRZR_QX{IXk0ybzH?S3t0xM&>( z%<=aU)%mq4QI=H1{{Zr=r!2_b!+XXsxwzl3tvreYHk2W%ay7!|H$iPKMR=sV`%=e~;ko(XypdF)D>8h|BCtDUN}a7nG$ULtUy>%TGQf1`(wV7~gtoi1jyV4SX6ztVMj$52)a}{S;ghm$J`Vob zwY_MWo&vVBhFdAkXn{UuW~cQoMB;y46~Yh8y1xj}5EA(LqZ=w$WR3|e#0}kXJX`!B z_e5m7mOHC!c^o^)s*N*{7K#Y1Yn@J~4=Feisj;i>I@aGM69nu~7oRkAX0H>+I%3KfGu1j`n z65o9*N`fuFx>-i#2U4}jpL{z>DDnvuy;QTh@Y&I$rq~M_oW0If$2-T8l8!!tUPjV$ zBlyH)$YVaMQrcp;!96%6+sg&ahSmv4n2>gggd}w}>HM%3Uz0sT1IowCUMx2D(bj0B z&Og(+�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 P~-wMKSQU4V9yL^Yw;TGI`k0ispi%$GJXPhkOA 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