diff --git a/dist/oscd/package.json b/dist/oscd/package.json deleted file mode 100644 index 0cab572..0000000 --- a/dist/oscd/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "oscd", - "version": "0.0.1", - "type": "commonjs", - "executors": "./executors.json", - "generators": "./generators.json", - "dependencies": { - "@nx/devkit": "16.5.5", - "@web/test-runner-playwright": "0.9.0", - "@web/test-runner-visual-regression": "0.7.1", - "pixelmatch": "5.3.0", - "pngjs": "6.0.0" - }, - "main": "./../../oscd/src/index.js", - "types": "./../../oscd/src/index.d.ts" -} diff --git a/lib/core/.tsbuildinfo b/lib/core/.tsbuildinfo deleted file mode 100644 index ebcd8e2..0000000 --- a/lib/core/.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@lit/reactive-element/css-tag.d.ts","../../node_modules/@lit/reactive-element/reactive-controller.d.ts","../../node_modules/@lit/reactive-element/reactive-element.d.ts","../../node_modules/@types/trusted-types/lib/index.d.ts","../../node_modules/@types/trusted-types/index.d.ts","../../node_modules/lit-html/directive.d.ts","../../node_modules/lit-html/lit-html.d.ts","../../node_modules/lit-element/lit-element.d.ts","../../node_modules/@lit/reactive-element/decorators/base.d.ts","../../node_modules/@lit/reactive-element/decorators/custom-element.d.ts","../../node_modules/@lit/reactive-element/decorators/property.d.ts","../../node_modules/@lit/reactive-element/decorators/state.d.ts","../../node_modules/@lit/reactive-element/decorators/event-options.d.ts","../../node_modules/@lit/reactive-element/decorators/query.d.ts","../../node_modules/@lit/reactive-element/decorators/query-all.d.ts","../../node_modules/@lit/reactive-element/decorators/query-async.d.ts","../../node_modules/@lit/reactive-element/decorators/query-assigned-nodes.d.ts","../../node_modules/@lit/reactive-element/decorators/query-assigned-elements.d.ts","../../node_modules/lit-element/decorators.d.ts","../../node_modules/lit-element/index.d.ts","./src/oscd-component.ts","./src/oscd-component.styles.ts","./src/index.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/accepts/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/acorn/index.d.ts","../../node_modules/@types/babel__code-frame/index.d.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/connect/index.d.ts","../../node_modules/@types/body-parser/index.d.ts","../../node_modules/keyv/src/index.d.ts","../../node_modules/@types/http-cache-semantics/index.d.ts","../../node_modules/@types/responselike/index.d.ts","../../node_modules/@types/cacheable-request/index.d.ts","../../node_modules/@types/chai/index.d.ts","../../node_modules/@types/chai-dom/index.d.ts","../../node_modules/@types/qs/index.d.ts","../../node_modules/@types/co-body/index.d.ts","../../node_modules/@types/command-line-args/index.d.ts","../../node_modules/@types/content-disposition/index.d.ts","../../node_modules/@types/convert-source-map/index.d.ts","../../node_modules/@types/keygrip/index.d.ts","../../node_modules/@types/mime/index.d.ts","../../node_modules/@types/send/index.d.ts","../../node_modules/@types/range-parser/index.d.ts","../../node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/http-errors/index.d.ts","../../node_modules/@types/serve-static/index.d.ts","../../node_modules/@types/express/index.d.ts","../../node_modules/@types/cookies/index.d.ts","../../node_modules/@types/cross-spawn/index.d.ts","../../node_modules/@types/debounce/index.d.ts","../../node_modules/@types/ms/index.d.ts","../../node_modules/@types/debug/index.d.ts","../../node_modules/@types/detect-port/index.d.ts","../../node_modules/@types/doctrine/index.d.ts","../../node_modules/@types/ejs/index.d.ts","../../node_modules/@types/emscripten/index.d.ts","../../node_modules/@types/eslint/helpers.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/eslint/index.d.ts","../../node_modules/@types/eslint-scope/index.d.ts","../../node_modules/@types/estree-jsx/index.d.ts","../../node_modules/@types/find-cache-dir/index.d.ts","../../node_modules/@types/graceful-fs/index.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/hast/index.d.ts","../../node_modules/@types/http-assert/index.d.ts","../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../node_modules/@types/istanbul-lib-report/index.d.ts","../../node_modules/@types/istanbul-reports/index.d.ts","../../node_modules/@types/json5/index.d.ts","../../node_modules/@types/keyv/index.d.ts","../../node_modules/@types/koa-compose/index.d.ts","../../node_modules/@types/koa/index.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/mdast/index.d.ts","../../node_modules/@types/mdx/types.d.ts","../../node_modules/@types/mdx/index.d.ts","../../node_modules/@types/mime-types/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/mkdirp/index.d.ts","../../node_modules/@types/mocha/index.d.ts","../../node_modules/form-data/index.d.ts","../../node_modules/@types/node-fetch/externals.d.ts","../../node_modules/@types/node-fetch/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/parse-json/index.d.ts","../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts","../../node_modules/@types/parse5/index.d.ts","../../node_modules/@types/pixelmatch/index.d.ts","../../node_modules/@types/pngjs/index.d.ts","../../node_modules/@types/pretty-hrtime/index.d.ts","../../node_modules/@types/prismjs/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/resolve/index.d.ts","../../node_modules/@types/scheduler/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts","../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../node_modules/@types/sinon/index.d.ts","../../node_modules/@types/sinon-chai/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/ws/index.d.ts","../../node_modules/@types/yargs-parser/index.d.ts","../../node_modules/@types/yargs/index.d.ts","../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","e59262ddaae67dec2d226f8a5d05cf6c4dc353c0d9b1e4980a61d7fcf9a2b051","5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","d27ead0e913b4225279e8beb10450ecaf54af5ed145a6ecbbed18bb130815006","2fcd2d22b1f30555e785105597cd8f57ed50300e213c4f1bbca6ae149f782c38",{"version":"3c150a2e1758724811db3bdc5c773421819343b1627714e09f29b1f40a5dfb26","affectsGlobalScope":true},"7000ec8572390d035ba5ef993953957150d0c38ffb31b56653c97dd78cb6e1aa","056892cca68dca10a914f1580ba0e5710d26794e8707225dca9b5717ed702f1e","4ddf3962990379d1ea59b369a5516c7533b7944010d6998e0e9b1ab35d5af1f0","2a8f0a19a927e83421597c056c90695557142f54ca96358f01eb1f2a5eb228be","d08415b3d6d7fd153ba6e7bf7707ffc57f3c6ad85730ea63544756610b4350c6","411f23da7a63c3d3fd4860c41a458e8df239776fd5d9cd36dd3ad6be92afccbd","6ada3e065916c0ef2dbc9bc0f9b5d59afb25d9176f81fa2c8993a536924140c6","356cc1b058e05e07d2acd73bfa87f83a6f4a343450ee375dad232ff4a55d41d8","df286e6b181ed08766bc19cf1a2fddc50bc5d540f233bc1ce4430a3c1c8c8379","f436800c0af503703110c93144fcc7392524636fb4216296411243b29fe0162d","0d5002560b45ce4fd6c4124632f61789e584be0634602486a2ce59541311d153","bbe13c947d7d6c3426e0e5815e2b3464fa03d34a4bf47298c43b9237cf59555b","9f7d0ee33b9f8fa4dc2e9628e0cdf8683104d01de9d3d24f62cd5da014a5bec4","23056c9b3dac109ce202026810f8b09b6978883d8fd038d17dbe89e7b41f84b5","f5edc7f57484ff1569209c7933f3576e7d791743d178756177a05cef9c4625c2",{"version":"fc420d6e2e66d3b5133c1f4f8705c40c3796383c24b7f40b8c8bb07bc96fd36e","signature":"1ace5b091a00007142bda2b23980d7be85d279033be3d9b6b3d872984de82973"},{"version":"f4b556b5ea53e55203fa4938c20ab011a1a27c5599ca9ca7cc81ee8722a0cca9","signature":"f1a1d8f20ba1fbbcc596bc708db7bbc4248602f5cbb05e1d2fa650ac9b6b2f5a"},"000ab1462416bd337c56a717e776208f76df16f99236e74d8ef09b0645a81fc0","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","4275d5f964e7fc7afc18538e26b3748c207dd772998346d17f409749aa1f3a63",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","8c4c1a64db28930732033c31418f817dcb9d09d706766707ae6d38f23faf0c53","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"9c3df5971dc261aa29f25fdfcf7e8cfa248ff95a3d09ae4a6b81b1b09473f80f","6738101ae8e56cd3879ab3f99630ada7d78097fc9fd334df7e766216778ca219","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","3777eb752cef9aa8dd35bb997145413310008aa54ec44766de81a7ad891526cd","b95f751a58d283cb5e32f2655361f6e2a27f0368f69edc463a3472aae21d1303","ac65f04c2df0218cb8e54f012745cbfcc3c0e67c1f6b1e557d88842bbb72e2db","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","a2e86df4db576d80704e25293cec6f20fc6101a11f4747440e2eef58fb3c860c","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","6704f0b54df85640baaeebd86c9d4a1dbb661d5a4d57a75bc84162f562f6531d","9d255af1b09c6697089d3c9bf438292a298d8b7a95c68793c9aae80afc9e5ca7","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"c3bc5d095c3c22fd20b5a6550b9c9a6d56c3ffbb87ef057ccce7764b6bed4428","affectsGlobalScope":true},{"version":"4cdd1b520504f86d680470dc91baa79d625fa20e1f9dc1f99eba242eae9fada4","affectsGlobalScope":true},"ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","495da6628b9474e31d0636d66c54448bb8d84dbce902e8f70539ef6a525a2d7b","629766229f541d92210f30a92b6038568ec165fab14b7ee53bdf13667da37ca3","204dbe6c72467fb14bbe8f06510b11fb541b6ce29580c6e10ebd3bdb2eb0c1f9","13d94ac3ee5780f99988ae4cce0efd139598ca159553bc0100811eba74fc2351","ce013414484233b24f42c0fcfca48a60bb66ab4e13c82953662305e8f1ee4925","84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","aad5ffa61406b8e19524738fcf0e6fda8b3485bba98626268fdf252d1b2b630a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c",{"version":"352fc8497a30bc806d7defa0043d85802e5f35a7688731ee9a21456f5cb32a94","affectsGlobalScope":true},"f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","f7a9cb83c8fbc081a8b605880d191e0d0527cde2c1b2b2b623beca8f0203a2cd","43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","eb96a2321f717bccc3e49e104e299152984b927ea4546b559ae631c06565819c","5e3a55837aa1f42af2d2334c9b750f59f5f50a2205471875f5dd6aadc3e49ddb","68c559681a043ca6d622debcce75c4d82446fec08e06bf1066f71d6c325f224e","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","93b7325b49dfbf613d940ed0e471216657b2d77459dac34f1b5b1678f08f884c","4b4c4c74c41b52cada66c85638633d2b0fe7c43445daf877cfddb310d3f5e998","febcc45f9517827496659c229a21b058831eef4cf9b71b77fd9a364ae12c3b9e","de8877483ce1e67bced3ad1f4ac877fd5066f8465ab6a9e8b716662d727553e5",{"version":"3f547f989aa9c12dc888ae25c4afc076eb442f681ba17f50924642fe29c01da0","affectsGlobalScope":true},{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","6670e71d65610bd7b64aac5fdf58c21c545f7fa31e060f02a0dcd91763831eb8","e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a","99373707de2fdfdce847a4d138c36cf137b243ad206cf82d32e0653e2f0dcb4e","19f1159e1fa24300e2eaf72cb53f0815f5879ec53cad3c606802f0c55f0917e9","bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","cddf5c26907c0b8378bc05543161c11637b830da9fadf59e02a11e675d11e180","3d2cd8f3047fff04a71e7037a6a4cb9f4accb28dbd8c0d83164d414811025af0","e98185f4249720ace1921d59c1ff4612fa5c633a183fc9bf28e2e7b8e3c7fd51","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","5006668996956580886022c05108e32c742823e1b5652aff7914917233731518","d8ff10c7c1f825a87b2b2a1cef499c7079d2d1b880323ce9edbb81282aceee8d","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","19c816167e076e7c24f074389c6cf3ed87bdbb917d1ea439ca281f9d26db2439","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","30abc554c7ad13063a02ddd06757929b34357aea1f6fcf4ca39114cb0fc19384","5774751340e987a6a9e4a5dcc03ff68a6515adc2b91423e1af2f660fc8f30e81","bb5c385d6290f1ad2da7576e186810f23dce6d6bc7fb38ad565a4eb8cfed3541","6571f33cd3c23ee70fb48839c9a7486381cd3f439e17d97d10fc908e41468052","c757372a092924f5c16eaf11a1475b80b95bb4dae49fe3242d2ad908f97d5abe","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","875d567ecf2f865a1b19d30f2acf3203817e19fd95f7675351d046914ee39ac8",{"version":"5f186a758a616c107c70e8918db4630d063bd782f22e6e0b17573b125765b40b","affectsGlobalScope":true},"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","626bccaba2f61f03abe558a39501631565389a748bc47dd52b305c80176333c1","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377","5f2c582b9ef260cb9559a64221b38606378c1fabe17694592cdfe5975a6d7efa","f30350dd37c3f3c11f47adb7ce4e7a4928f578f4ae8a3197e0c8a0811da46b92","0b6a0b628776a3e3a4aeeba090438a26e7ffa15373ce658452c78c1f2254665d","c0a3ea3aee13c4946a6aefce3a6ab9292a40a29f6622cde0fda0b1067a1a1f5f","6484309596f594ae824513336bd2a2e04a1902b06bb149fa904f5cae5fbe5c50","6a386ff939f180ae8ef064699d8b7b6e62bc2731a62d7fbf5e02589383838dea",{"version":"549df62b64a71004aee17685b445a8289013daf96246ce4d9b087d13d7a27a61","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"40a1b33c67109be18a961127873e8ba198429eacf11a468b4a052cddc9a73f8d","affectsGlobalScope":true},"8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","7ccce4adb23a87a044c257685613126b47160f6975b224cea5f6af36c7f37514","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","5445b5383991fff958fe3a7b0a9c1b9c672a613bc30fda97aee6eddb4053c0d3",{"version":"4f0ad52a7fbd6bfba88ec22ec719b6956a0fc647030462f9db490e74236d116f","affectsGlobalScope":true},"b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","bc81aff061c53a7140270555f4b22da4ecfe8601e8027cf5aa175fbdc7927c31","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[[66,68]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[45,66,67,113],[45,65,113],[113,125],[113],[48,113],[54,113],[48,54,113],[48,54,62,113],[46,47,113],[87,113,120],[113,122,165],[113,125,126,127,128,129],[113,125,127],[87,113,120,131],[84,87,112,113,120,133,134,135],[113,137],[87,113,120,139],[87,113,120,131,144,151],[74,113,120],[113,155],[113,122,163,165],[113,122,161,162,165],[84,87,113,120,139,146,147],[113,132,139,148,150],[85,113,120],[113,168],[113,171],[113,172],[84,113,120],[113,177],[84,87,88,92,98,112,113,120,121,142,144,149,152,170,176],[113,178,180,181,182,183,184,185,186,187,188,189,190],[113,178,179,181,182,183,184,185,186,187,188,189,190],[113,179,180,181,182,183,184,185,186,187,188,189,190],[113,178,179,180,182,183,184,185,186,187,188,189,190],[113,178,179,180,181,183,184,185,186,187,188,189,190],[113,178,179,180,181,182,184,185,186,187,188,189,190],[113,178,179,180,181,182,183,185,186,187,188,189,190],[113,178,179,180,181,182,183,184,186,187,188,189,190],[113,178,179,180,181,182,183,184,185,187,188,189,190],[113,178,179,180,181,182,183,184,185,186,188,189,190],[113,178,179,180,181,182,183,184,185,186,187,189,190],[113,178,179,180,181,182,183,184,185,186,187,188,190],[113,178,179,180,181,182,183,184,185,186,187,188,189],[113,192,193],[87,112,113,120,199,200],[69,113],[72,113],[73,78,113],[74,84,85,92,101,112,113],[74,75,84,92,113],[76,113],[77,78,85,93,113],[78,101,109,113],[79,81,84,92,113],[80,113],[81,82,113],[83,84,113],[84,113],[84,85,86,101,112,113],[84,85,86,101,104,113],[113,117],[87,92,101,112,113],[84,85,87,88,92,101,109,112,113],[87,89,101,109,112,113],[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],[84,90,113],[91,112,113],[81,84,92,101,113],[93,113],[94,113],[72,95,113],[96,111,113,117],[97,113],[98,113],[84,99,113],[99,100,113,115],[84,101,102,103,104,113],[101,103,113],[101,102,113],[104,113],[105,113],[84,107,108,113],[107,108,113],[78,92,101,109,113],[110,113],[92,111,113],[73,87,98,112,113],[78,113],[101,113,114],[113,115],[113,116],[73,78,84,86,95,101,112,113,115,117],[101,113,118],[113,204],[113,205],[113,120],[101,113,118,120],[113,210,211,212,213],[87,101,113,120],[113,217,256],[113,217,241,256],[113,256],[113,217],[113,217,242,256],[113,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],[113,242,256],[85,101,113,120,145],[87,113,120,145,149],[113,137,258],[113,257],[49,113],[84,87,89,92,101,109,112,113,118,120],[113,262],[84,101,113,120],[54,55,56,57,58,59,60,61,62,63,113],[48,52,53,64,113],[48,52,113],[52,113],[50,51,113],[65]],"referencedMap":[[68,1],[67,2],[66,2],[127,3],[125,4],[46,4],[54,5],[55,6],[58,7],[56,7],[60,7],[63,8],[62,4],[61,7],[59,7],[57,6],[47,4],[48,9],[121,10],[123,11],[124,4],[130,12],[126,3],[128,13],[129,3],[132,14],[136,15],[138,16],[137,4],[140,17],[141,4],[131,10],[142,4],[143,4],[152,18],[153,19],[154,4],[156,20],[157,4],[158,4],[159,4],[160,4],[164,21],[161,4],[163,22],[165,11],[122,4],[148,23],[151,24],[166,4],[167,25],[169,26],[170,4],[134,4],[149,4],[171,4],[172,27],[173,28],[162,4],[174,4],[144,4],[175,29],[176,30],[177,31],[179,32],[180,33],[178,34],[181,35],[182,36],[183,37],[184,38],[185,39],[186,40],[187,41],[188,42],[189,43],[190,44],[191,26],[193,45],[192,4],[194,4],[145,4],[195,4],[196,4],[197,25],[198,4],[155,4],[200,4],[201,46],[69,47],[70,47],[72,48],[73,49],[74,50],[75,51],[76,52],[77,53],[78,54],[79,55],[80,56],[81,57],[82,57],[83,58],[84,59],[85,60],[86,61],[71,62],[119,4],[87,63],[88,64],[89,65],[120,66],[90,67],[91,68],[92,69],[93,70],[94,71],[95,72],[96,73],[97,74],[98,75],[99,76],[100,77],[101,78],[103,79],[102,80],[104,81],[105,82],[106,4],[107,83],[108,84],[109,85],[110,86],[111,87],[112,88],[113,89],[114,90],[115,91],[116,92],[117,93],[118,94],[202,4],[203,4],[205,95],[204,96],[206,97],[207,98],[208,4],[209,4],[210,4],[139,4],[147,4],[211,4],[214,99],[215,97],[135,100],[216,4],[213,4],[241,101],[242,102],[217,103],[220,103],[239,101],[240,101],[230,101],[229,104],[227,101],[222,101],[235,101],[233,101],[237,101],[221,101],[234,101],[238,101],[223,101],[224,101],[236,101],[218,101],[225,101],[226,101],[228,101],[232,101],[243,105],[231,101],[219,101],[256,106],[255,4],[250,105],[252,107],[251,105],[244,105],[245,105],[247,105],[249,105],[253,107],[254,107],[246,107],[248,107],[146,108],[150,109],[259,110],[258,111],[257,4],[260,4],[50,112],[49,4],[168,4],[261,113],[262,4],[263,114],[264,115],[212,4],[199,100],[133,59],[64,116],[65,117],[53,118],[51,119],[52,120],[45,4],[43,4],[44,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[33,4],[30,4],[31,4],[32,4],[34,4],[7,4],[35,4],[40,4],[41,4],[36,4],[37,4],[38,4],[39,4],[1,4],[42,4]],"exportedModulesMap":[[68,1],[67,121],[66,121],[127,3],[125,4],[46,4],[54,5],[55,6],[58,7],[56,7],[60,7],[63,8],[62,4],[61,7],[59,7],[57,6],[47,4],[48,9],[121,10],[123,11],[124,4],[130,12],[126,3],[128,13],[129,3],[132,14],[136,15],[138,16],[137,4],[140,17],[141,4],[131,10],[142,4],[143,4],[152,18],[153,19],[154,4],[156,20],[157,4],[158,4],[159,4],[160,4],[164,21],[161,4],[163,22],[165,11],[122,4],[148,23],[151,24],[166,4],[167,25],[169,26],[170,4],[134,4],[149,4],[171,4],[172,27],[173,28],[162,4],[174,4],[144,4],[175,29],[176,30],[177,31],[179,32],[180,33],[178,34],[181,35],[182,36],[183,37],[184,38],[185,39],[186,40],[187,41],[188,42],[189,43],[190,44],[191,26],[193,45],[192,4],[194,4],[145,4],[195,4],[196,4],[197,25],[198,4],[155,4],[200,4],[201,46],[69,47],[70,47],[72,48],[73,49],[74,50],[75,51],[76,52],[77,53],[78,54],[79,55],[80,56],[81,57],[82,57],[83,58],[84,59],[85,60],[86,61],[71,62],[119,4],[87,63],[88,64],[89,65],[120,66],[90,67],[91,68],[92,69],[93,70],[94,71],[95,72],[96,73],[97,74],[98,75],[99,76],[100,77],[101,78],[103,79],[102,80],[104,81],[105,82],[106,4],[107,83],[108,84],[109,85],[110,86],[111,87],[112,88],[113,89],[114,90],[115,91],[116,92],[117,93],[118,94],[202,4],[203,4],[205,95],[204,96],[206,97],[207,98],[208,4],[209,4],[210,4],[139,4],[147,4],[211,4],[214,99],[215,97],[135,100],[216,4],[213,4],[241,101],[242,102],[217,103],[220,103],[239,101],[240,101],[230,101],[229,104],[227,101],[222,101],[235,101],[233,101],[237,101],[221,101],[234,101],[238,101],[223,101],[224,101],[236,101],[218,101],[225,101],[226,101],[228,101],[232,101],[243,105],[231,101],[219,101],[256,106],[255,4],[250,105],[252,107],[251,105],[244,105],[245,105],[247,105],[249,105],[253,107],[254,107],[246,107],[248,107],[146,108],[150,109],[259,110],[258,111],[257,4],[260,4],[50,112],[49,4],[168,4],[261,113],[262,4],[263,114],[264,115],[212,4],[199,100],[133,59],[64,116],[65,117],[53,118],[51,119],[52,120],[45,4],[43,4],[44,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[33,4],[30,4],[31,4],[32,4],[34,4],[7,4],[35,4],[40,4],[41,4],[36,4],[37,4],[38,4],[39,4],[1,4],[42,4]],"semanticDiagnosticsPerFile":[68,67,66,127,125,46,54,55,58,56,60,63,62,61,59,57,47,48,121,123,124,130,126,128,129,132,136,138,137,140,141,131,142,143,152,153,154,156,157,158,159,160,164,161,163,165,122,148,151,166,167,169,170,134,149,171,172,173,162,174,144,175,176,177,179,180,178,181,182,183,184,185,186,187,188,189,190,191,193,192,194,145,195,196,197,198,155,200,201,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,71,119,87,88,89,120,90,91,92,93,94,95,96,97,98,99,100,101,103,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,202,203,205,204,206,207,208,209,210,139,147,211,214,215,135,216,213,241,242,217,220,239,240,230,229,227,222,235,233,237,221,234,238,223,224,236,218,225,226,228,232,243,231,219,256,255,250,252,251,244,245,247,249,253,254,246,248,146,150,259,258,257,260,50,49,168,261,262,263,264,212,199,133,64,65,53,51,52,45,43,44,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,1,42]},"version":"5.1.6"} \ No newline at end of file diff --git a/lib/core/dist/index.d.ts b/lib/core/dist/index.d.ts deleted file mode 100644 index f1a025e..0000000 --- a/lib/core/dist/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './oscd-component'; -export * from './oscd-component.styles'; diff --git a/lib/core/dist/index.js b/lib/core/dist/index.js deleted file mode 100644 index eeb01dd..0000000 --- a/lib/core/dist/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './oscd-component'; -export * from './oscd-component.styles'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/core/dist/index.js.map b/lib/core/dist/index.js.map deleted file mode 100644 index b8f3202..0000000 --- a/lib/core/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC","sourcesContent":["export * from './oscd-component';\nexport * from './oscd-component.styles';\n"]} \ No newline at end of file diff --git a/lib/core/dist/oscd-component.d.ts b/lib/core/dist/oscd-component.d.ts deleted file mode 100644 index 1a962a0..0000000 --- a/lib/core/dist/oscd-component.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { LitElement } from 'lit-element'; -export declare abstract class OscdComponent extends LitElement { -} diff --git a/lib/core/dist/oscd-component.js b/lib/core/dist/oscd-component.js deleted file mode 100644 index 5557b8e..0000000 --- a/lib/core/dist/oscd-component.js +++ /dev/null @@ -1,4 +0,0 @@ -import { LitElement } from 'lit-element'; -export class OscdComponent extends LitElement { -} -//# sourceMappingURL=oscd-component.js.map \ No newline at end of file diff --git a/lib/core/dist/oscd-component.js.map b/lib/core/dist/oscd-component.js.map deleted file mode 100644 index 3e0630e..0000000 --- a/lib/core/dist/oscd-component.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"oscd-component.js","sourceRoot":"","sources":["../src/oscd-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAgB,aAAc,SAAQ,UAAU;CAAG","sourcesContent":["import { LitElement } from 'lit-element';\n\nexport abstract class OscdComponent extends LitElement {}\n"]} \ No newline at end of file diff --git a/lib/core/dist/oscd-component.styles.d.ts b/lib/core/dist/oscd-component.styles.d.ts deleted file mode 100644 index ddedf28..0000000 --- a/lib/core/dist/oscd-component.styles.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const styles: import("lit-element").CSSResult; diff --git a/lib/core/dist/oscd-component.styles.js b/lib/core/dist/oscd-component.styles.js deleted file mode 100644 index 0f1d9a6..0000000 --- a/lib/core/dist/oscd-component.styles.js +++ /dev/null @@ -1,17 +0,0 @@ -import { css } from 'lit-element'; -export const styles = css ` - :host { - box-sizing: border-box; - } - - :host *, - :host *::before, - :host *::after { - box-sizing: inherit; - } - - [hidden] { - display: none !important; - } -`; -//# sourceMappingURL=oscd-component.styles.js.map \ No newline at end of file diff --git a/lib/core/dist/oscd-component.styles.js.map b/lib/core/dist/oscd-component.styles.js.map deleted file mode 100644 index bf48862..0000000 --- a/lib/core/dist/oscd-component.styles.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"oscd-component.styles.js","sourceRoot":"","sources":["../src/oscd-component.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;CAcxB,CAAC","sourcesContent":["import { css } from 'lit-element';\n\nexport const styles = css`\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n`;\n"]} \ No newline at end of file diff --git a/tools/oscd/.eslintrc.json b/tools/oscd/.eslintrc.json index fa9c27b..21750e7 100644 --- a/tools/oscd/.eslintrc.json +++ b/tools/oscd/.eslintrc.json @@ -15,7 +15,7 @@ "rules": {} }, { - "files": ["./package.json", "./executors.json"], + "files": ["./package.json", "./executors.json", "./generators.json"], "parser": "jsonc-eslint-parser", "rules": { "@nx/nx-plugin-checks": "error" diff --git a/tools/oscd/generators.json b/tools/oscd/generators.json index b72141e..a327606 100644 --- a/tools/oscd/generators.json +++ b/tools/oscd/generators.json @@ -4,6 +4,11 @@ "factory": "./src/generators/component/generator", "schema": "./src/generators/component/schema.json", "description": "oscd-component generator" + }, + "status": { + "factory": "./src/generators/status/generator", + "schema": "./src/generators/status/schema.json", + "description": "Oscd Component Status setter" } } } diff --git a/tools/oscd/package.json b/tools/oscd/package.json index 5beb4ed..01ef745 100644 --- a/tools/oscd/package.json +++ b/tools/oscd/package.json @@ -3,5 +3,11 @@ "version": "0.0.1", "type": "commonjs", "executors": "./executors.json", - "generators": "./generators.json" + "generators": "./generators.json", + "dependencies": { + "@nx/devkit": "16.6.0" + }, + "devDependencies": { + "mem": "^9.0.2" + } } diff --git a/tools/oscd/project.json b/tools/oscd/project.json index 4664a3d..7b9257e 100644 --- a/tools/oscd/project.json +++ b/tools/oscd/project.json @@ -44,23 +44,10 @@ "oscd/**/*.ts", "oscd/package.json", "tools/oscd/executors.json", - "tools/oscd/package.json" + "tools/oscd/package.json", + "tools/oscd/generators.json" ] } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], - "options": { - "jestConfig": "oscd/jest.config.ts", - "passWithNoTests": true - }, - "configurations": { - "ci": { - "ci": true, - "codeCoverage": true - } - } } }, "tags": [] diff --git a/tools/oscd/src/generators/component/files/.editorconfig b/tools/oscd/src/generators/component/files/.editorconfig deleted file mode 100644 index c8c2d2a..0000000 --- a/tools/oscd/src/generators/component/files/.editorconfig +++ /dev/null @@ -1,29 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# editorconfig.org - -root = true - - -[*] - -# Change these settings to your own preference -indent_style = space -indent_size = 2 - -# We recommend you to keep these unchanged -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false - -[*.json] -indent_size = 2 - -[*.{html,js,md}] -block_comment_start = /** -block_comment = * -block_comment_end = */ diff --git a/tools/oscd/src/generators/component/files/.eslintrc b/tools/oscd/src/generators/component/files/.eslintrc deleted file mode 100644 index 88a7ad8..0000000 --- a/tools/oscd/src/generators/component/files/.eslintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "parserOptions": { - "requireConfigFile": false, - "ecmaVersion": 6, - "ecmaFeatures": { - "experimentalObjectRestSpread": true - }, - "sourceType": "module", - "allowImportExportEverywhere": true - }, - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], - "parser": "@typescript-eslint/parser", - "plugins": ["@typescript-eslint"], - "root": true, - "ignorePatterns": ["**/*.html", "*.config.js"] -} diff --git a/tools/oscd/src/generators/component/files/.gitignore b/tools/oscd/src/generators/component/files/.gitignore index f9d5b4e..63cc1db 100644 --- a/tools/oscd/src/generators/component/files/.gitignore +++ b/tools/oscd/src/generators/component/files/.gitignore @@ -8,23 +8,13 @@ ## npm /node_modules/ /npm-debug.log - -## failed screenshots -/screenshots/*/failed/ +.tsbuildinfo ## testing /coverage/ -## local debug -/.npmrc - -## temp folders -/.tmp/ +## docs +/doc/ # build -/_site/ /dist/ -/out-tsc/ - -storybook-static -custom-elements.json diff --git a/tools/oscd/src/generators/component/files/.npmignore b/tools/oscd/src/generators/component/files/.npmignore index a147ebe..28f225d 100644 --- a/tools/oscd/src/generators/component/files/.npmignore +++ b/tools/oscd/src/generators/component/files/.npmignore @@ -8,22 +8,11 @@ ## npm /node_modules/ /npm-debug.log - -## failed screenshots -/screenshots/*/failed/ +.tsbuildinfo ## testing /coverage/ -## local debug -/.npmrc - -## temp folders -/.tmp/ - -# build -/_site/ -/out-tsc/ +## docs +/doc/ -storybook-static -custom-elements.json diff --git a/tools/oscd/src/generators/component/files/.storybook/main.ts b/tools/oscd/src/generators/component/files/.storybook/main.ts index 1e87a51..c8e9fee 100644 --- a/tools/oscd/src/generators/component/files/.storybook/main.ts +++ b/tools/oscd/src/generators/component/files/.storybook/main.ts @@ -2,7 +2,21 @@ import type { StorybookConfig } from '@storybook/web-components-vite'; const config: StorybookConfig = { stories: ['../stories/**/*.stories.@(js|jsx|ts|tsx)', '../stories/**/*.mdx'], - addons: ['@storybook/addon-essentials'], + addons: [ + '@storybook/addon-docs', + '@storybook/addon-controls', + '@storybook/addon-actions', + '@storybook/addon-a11y', + '@storybook/addon-links', + { + name: '@storybook/adddon-essentials', + options: { + background: false, + }, + }, + '@etchteam/storybook-addon-status/register', + 'storybook-addon-root-attribute/register', + ], framework: { name: '@storybook/web-components-vite', options: { @@ -14,7 +28,3 @@ const config: StorybookConfig = { }; export default config; - -// To customize your Vite configuration you can use the viteFinal field. -// Check https://storybook.js.org/docs/react/builders/vite#configuration -// and https://nx.dev/packages/storybook/documents/custom-builder-configs diff --git a/tools/oscd/src/generators/component/files/.storybook/preview-head.html b/tools/oscd/src/generators/component/files/.storybook/preview-head.html index 4deaad2..dc703f9 100644 --- a/tools/oscd/src/generators/component/files/.storybook/preview-head.html +++ b/tools/oscd/src/generators/component/files/.storybook/preview-head.html @@ -1 +1,12 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/tools/oscd/src/generators/component/files/.storybook/preview.ts b/tools/oscd/src/generators/component/files/.storybook/preview.ts new file mode 100644 index 0000000..31a5de4 --- /dev/null +++ b/tools/oscd/src/generators/component/files/.storybook/preview.ts @@ -0,0 +1,38 @@ +import { html } from 'lit'; +import { withRootAttribute } from 'storybook-addon-root-attribute'; + +import '../../../themes/prebuilt/oscd.css'; + +export const decorators = [ + withRootAttribute, + (story) => html`
${story()}
`, +]; + +export const parameters = { + statuses: { + released: { + background: '#0000ff', + color: '#ffffff', + description: 'This component is stable and released', + }, + beta: { + background: '#FF0000', + color: '#FFFFFF', + description: 'This component is still in beta', + }, + }, + rootAttribute: { + defaultState: { + name: 'Light', + value: null, + }, + attribute: 'dark', + tooltip: true, + states: [ + { + name: 'Dark', + value: 'dark', + }, + ], + }, +}; diff --git a/tools/oscd/src/generators/component/files/.storybook/preview.ts.template b/tools/oscd/src/generators/component/files/.storybook/preview.ts.template deleted file mode 100644 index e5539d5..0000000 --- a/tools/oscd/src/generators/component/files/.storybook/preview.ts.template +++ /dev/null @@ -1,10 +0,0 @@ -import { <%= className %> } from '../src/<%= selector %>'; - -const componentName = '<%= selector %>'; - -function defineCustomElement(): void { - customElements.get(componentName) || - customElements.define(componentName, <%= className %>); -} - -defineCustomElement(); diff --git a/tools/oscd/src/generators/component/files/CHANGELOG.md b/tools/oscd/src/generators/component/files/CHANGELOG.md index 825c32f..5ddad42 100644 --- a/tools/oscd/src/generators/component/files/CHANGELOG.md +++ b/tools/oscd/src/generators/component/files/CHANGELOG.md @@ -1 +1 @@ -# Changelog +# Changelog \ No newline at end of file diff --git a/tools/oscd/src/generators/component/files/EXAMPLE.md.template b/tools/oscd/src/generators/component/files/EXAMPLE.md.template new file mode 100644 index 0000000..8202c03 --- /dev/null +++ b/tools/oscd/src/generators/component/files/EXAMPLE.md.template @@ -0,0 +1,4 @@ +```html +<<%= selector %>> +> +``` \ No newline at end of file diff --git a/tools/oscd/src/index.ts b/tools/oscd/src/generators/component/files/INTRO.md similarity index 100% rename from tools/oscd/src/index.ts rename to tools/oscd/src/generators/component/files/INTRO.md diff --git a/tools/oscd/src/generators/component/files/LICENSE b/tools/oscd/src/generators/component/files/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/tools/oscd/src/generators/component/files/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/tools/oscd/src/generators/component/files/LICENSE.md b/tools/oscd/src/generators/component/files/LICENSE.md new file mode 100644 index 0000000..eedc68b --- /dev/null +++ b/tools/oscd/src/generators/component/files/LICENSE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/tools/oscd/src/generators/component/files/README.md.template b/tools/oscd/src/generators/component/files/README.md.template deleted file mode 100644 index 3140bcc..0000000 --- a/tools/oscd/src/generators/component/files/README.md.template +++ /dev/null @@ -1,75 +0,0 @@ -# <%= selector %> - -This webcomponent follows the [open-wc](https://github.com/open-wc/open-wc) recommendation. - -## Installation - -```bash -npm i <%= scope %>/<%= selector %> -``` - -## Usage - -```html - - -<<%= selector %>>> -``` - -## Linting and formatting - -To scan the project for linting and formatting errors, run - -```bash -npm run lint -``` - -To automatically fix linting and formatting errors, run - -```bash -npm run format -``` - -## Testing with Web Test Runner - -To execute a single test run: - -```bash -npm run test -``` - -To run the tests in interactive watch mode run: - -```bash -npm run test:watch -``` - -## Demoing with Storybook - -To run a local instance of Storybook for your component, run - -```bash -npm run storybook -``` - -To build a production version of Storybook, run - -```bash -npm run storybook:build -``` - -## Tooling configs - -For most of the tools, the configuration is in the `package.json` to reduce the amount of files in your project. - -## Local Demo with `web-dev-server` - -```bash -npm start -``` - -To run a local development server that serves the basic demo located in `demo/index.html` - -© 2023 Alliander N.V. diff --git a/tools/oscd/src/generators/component/files/demo/index.html.template b/tools/oscd/src/generators/component/files/demo/index.html.template deleted file mode 100644 index 73a80ba..0000000 --- a/tools/oscd/src/generators/component/files/demo/index.html.template +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - -
- - - - - diff --git a/tools/oscd/src/generators/component/files/package.json.template b/tools/oscd/src/generators/component/files/package.json.template index a3bb392..6629d21 100644 --- a/tools/oscd/src/generators/component/files/package.json.template +++ b/tools/oscd/src/generators/component/files/package.json.template @@ -13,13 +13,13 @@ ".": "./dist/<%= className %>.js" }, "type": "module", + "readme": "./README.md", "scripts": { "analyze": "cem analyze", - "start": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wds\"", - "build": "tsc && npm run analyze -- --exclude dist", - "prepublish": "tsc && npm run analyze -- --exclude dist", - "lint": "eslint --ext .ts,.html . --ignore-path .gitignore && prettier \"**/*.ts\" --check --ignore-path .gitignore", - "format": "eslint --ext .ts,.html . --fix --ignore-path .gitignore && prettier \"**/*.ts\" --write --ignore-path .gitignore", + "build": "tsc", + "clean": "rimraf .tsbuildinfo dist", + "storybook": "npx nx storybook <%= selector %>", + "typedoc": "typedoc", "test": "tsc --p tsconfig.test.json && wtr --coverage", "test:unit": "tsc --p tsconfig.test.json && wtr --group default", "test:visual": "tsc --p tsconfig.test.json && wtr --group visual", @@ -27,32 +27,35 @@ "test:watch": "tsc --p tsconfig.test.json && concurrently -k -r \"tsc --p tsconfig.test.json --watch --preserveWatchOutput\" \"wtr --watch\"" }, "dependencies": { - "lit": "^2.7.4", - "lit-element": "2.5.1", - "lit-html": "1.4.1" + "@openscd/core": "*", + "lit": "^2.7.6" }, + "author": "OpenSCD", + "license": "ISC", "devDependencies": { + "@commitlint/cli": "^17.3.0", + "@commitlint/config-conventional": "^17.3.0", "@custom-elements-manifest/analyzer": "^0.4.17", + "@open-wc/demoing-storybook": "^2.4.7", "@open-wc/eslint-config": "^8.0.2", + "@open-wc/scoped-elements": "^2.2.0", "@open-wc/testing": "^3.1.6", + "@oscd/utils": "*", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "@web/dev-server": "^0.1.34", + "@web/dev-server-storybook": "^0.5.4", "@web/test-runner": "^0.14.0", "@web/test-runner-playwright": "^0.9.0", "@web/test-runner-visual-regression": "^0.7.0", - "concurrently": "^5.3.0", - "eslint": "^7.32.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-tsdoc": "^0.2.17", - "prettier": "^2.4.1", - "tslib": "^2.3.1", - "typescript": "^4.5.2" + "concurrently": "^8.2.0", + "storybook-addon-root-attribute": "^1.0.2", + "tslib": "^2.6.0", + "typedoc": "^0.24.8", + "typescript": "^5.1.6" }, "customElements": "custom-elements.json", - "prettier": { - "singleQuote": true, - "arrowParens": "avoid" + "oscd": { + "status": "WIP" } -} \ No newline at end of file +} diff --git a/tools/oscd/src/generators/component/files/src/__className__.ts.template b/tools/oscd/src/generators/component/files/src/__className__.ts.template index 266fd31..7742f01 100644 --- a/tools/oscd/src/generators/component/files/src/__className__.ts.template +++ b/tools/oscd/src/generators/component/files/src/__className__.ts.template @@ -1,4 +1,5 @@ -import { <%= className %> } from './<%= selector %>.js'; +import { <%= className %> } from './<%= selector %>'; window.customElements.define('<%= selector %>', <%= className %>); + export { <%= className %> }; diff --git a/tools/oscd/src/generators/component/files/src/__selector__.ts.template b/tools/oscd/src/generators/component/files/src/__selector__.ts.template index c74078e..dc0d733 100644 --- a/tools/oscd/src/generators/component/files/src/__selector__.ts.template +++ b/tools/oscd/src/generators/component/files/src/__selector__.ts.template @@ -9,14 +9,19 @@ import { OscdComponent } from '@openscd/core'; import styles from './<%= selector %>.styles.js'; /** - * @tag <%= selector %> + * + * + * @example <<%= selector %>>> + * @tagname <%= selector %> */ export class <%= className %> extends OscdComponent { - static styles: CSSResultGroup = styles; - render(): TemplateResult { - return html`<%= selector %> works!` + static get scopedElements() { + return {}; } + render(): TemplateResult { + return html``; + } } diff --git a/tools/oscd/src/generators/component/files/src/index.ts b/tools/oscd/src/generators/component/files/src/index.ts new file mode 100644 index 0000000..53c9fd3 --- /dev/null +++ b/tools/oscd/src/generators/component/files/src/index.ts @@ -0,0 +1 @@ +export * from './<%= className %>.js'; diff --git a/tools/oscd/src/generators/component/files/stories/__selector__.mdx.template b/tools/oscd/src/generators/component/files/stories/__selector__.mdx.template index 2d425ba..ee8f285 100644 --- a/tools/oscd/src/generators/component/files/stories/__selector__.mdx.template +++ b/tools/oscd/src/generators/component/files/stories/__selector__.mdx.template @@ -1,22 +1,28 @@ -import { Meta, Story, Canvas } from "@storybook/blocks"; +import { Meta, Story, Canvas, Source, ArgTypes, Title, Description, Subtitle } from '@storybook/blocks'; -import { Markdown } from "@storybook/addon-docs"; +import { Markdown } from '@storybook/addon-docs'; import * as <%= className %>Stories from './<%= selector %>.stories'; -import Readme from "../../packages/<%= name %>/README.md"; -import Changelog from "../../packages/<%= name %>/CHANGELOG.md"; +import Readme from '../README.md?raw'; +import Changelog from '../CHANGELOG.md?raw'; -Stories } /> +Stories} /> +<%= selector %> +Stories.Basic} /> -# <%= selector %> +Properties +Stories} /> + +Stories.Basic} /> + +Stories.Basic} /> + +# Example +Stories.Basic} /> {Readme} # Changelog {Changelog} - - - Stories.Regular } /> - diff --git a/tools/oscd/src/generators/component/files/stories/__selector__.stories.ts.template b/tools/oscd/src/generators/component/files/stories/__selector__.stories.ts.template index cdb492d..33b64b9 100644 --- a/tools/oscd/src/generators/component/files/stories/__selector__.stories.ts.template +++ b/tools/oscd/src/generators/component/files/stories/__selector__.stories.ts.template @@ -1,20 +1,40 @@ +import type { Meta, StoryObj } from '@storybook/web-components'; +import { action } from '@storybook/addon-actions'; + import { html, TemplateResult } from 'lit'; -export default { - title: '<%= name %>/<%= className %>', +import '../src/<%= className %>'; + +import { createBadge } from '@oscd/utils'; + +import pckgJson from '../package.json'; + +const meta: Meta = { + title: '<%= className %>', component: '<%= selector %>', - argTypes: {}, + parameters: { + status: { + type: createBadge(pckgJson), + }, + }, }; -interface Story { - (args: T): TemplateResult; - args?: Partial; - argTypes?: Record; -} +export default meta; -interface ArgTypes {} +type Story = StoryObj; -const Template: Story = ({}: ArgTypes) => - html`<<%= selector %>>>`; +/** + * Basic + */ +export const Basic: Story = { + args: { + }, + parameters: { + docs: { + description: { + story: 'Basic <%= selector %>', + }, + }, + }, +}; -export const Regular = Template.bind({}); diff --git a/tools/oscd/src/generators/component/files/test/__selector__.spec.ts.template b/tools/oscd/src/generators/component/files/test/__selector__.spec.ts.template index ea92ea2..410c159 100644 --- a/tools/oscd/src/generators/component/files/test/__selector__.spec.ts.template +++ b/tools/oscd/src/generators/component/files/test/__selector__.spec.ts.template @@ -1,19 +1,15 @@ import { expect, fixture, html } from '@open-wc/testing'; -import '../src/<%= className %>.js'; -import { <%= className %> } from '../src/<%= className %>.js'; +import '../src'; +import type { <%= className %> } from '../src'; -describe('<%= selector %>', () => { +describe('Basic component <%= selector %>', () => { let element: <%= className %>; beforeEach(async () => { element = await fixture( - html`<<%= selector %>>>` + html`<<%= selector %>>` ); await element.updateComplete; }); - - it('looks like the latest snapshot', async () => { - await expect(element).shadowDom.to.equalSnapshot(); - }); }); diff --git a/tools/oscd/src/generators/component/files/test/__selector__.test.ts.template b/tools/oscd/src/generators/component/files/test/__selector__.test.ts.template index 3f75131..ffb352b 100644 --- a/tools/oscd/src/generators/component/files/test/__selector__.test.ts.template +++ b/tools/oscd/src/generators/component/files/test/__selector__.test.ts.template @@ -1,15 +1,14 @@ -import { fixture } from '@open-wc/testing'; -import { html } from 'lit'; +import { fixture, html } from '@open-wc/testing'; import { visualDiff } from '@web/test-runner-visual-regression'; -import '../src/<%= className %>.js'; -import type { <%= className %> } from '../src/<%= className %>.js'; +import '../src'; +import { <%= className %>> } from '../src'; const factor = process.env.CI ? 2 : 1; function timeout(ms: number) { - return new Promise(res => { + return new Promise((res) => { setTimeout(res, ms * factor); }); } @@ -29,10 +28,4 @@ describe('<%= selector %>', () => { afterEach(() => element.remove()); - it('displays the component', async () => { - await element.updateComplete; - await timeout(500); - await visualDiff(element, '<%= selector %>'); - }); - }); diff --git a/tools/oscd/src/generators/component/files/tsconfig.json b/tools/oscd/src/generators/component/files/tsconfig.json index d845658..13eb09d 100644 --- a/tools/oscd/src/generators/component/files/tsconfig.json +++ b/tools/oscd/src/generators/component/files/tsconfig.json @@ -4,19 +4,22 @@ "module": "esnext", "moduleResolution": "node", "noEmitOnError": true, - "lib": ["es2017", "dom"], + "lib": ["es2018", "dom"], "strict": true, "esModuleInterop": false, "allowSyntheticDefaultImports": true, "experimentalDecorators": true, + "declaration": true, "importHelpers": true, - "skipLibCheck": true, "outDir": "dist", "sourceMap": true, "inlineSources": true, "rootDir": "./src", - "declaration": true, - "incremental": true + "tsBuildInfoFile": ".tsbuildinfo", + "incremental": true, + "skipLibCheck": true, + "resolveJsonModule": true }, - "include": ["src/*.ts"] + "include": ["./src/**/*.ts"], + "exclude": ["**/*.stories.ts", "**/*.stories.js"] } diff --git a/tools/oscd/src/generators/component/files/tsconfig.storybook.json b/tools/oscd/src/generators/component/files/tsconfig.storybook.json index 002dce9..e5904fe 100644 --- a/tools/oscd/src/generators/component/files/tsconfig.storybook.json +++ b/tools/oscd/src/generators/component/files/tsconfig.storybook.json @@ -4,17 +4,15 @@ "emitDecoratorMetadata": true, "composite": true, "incremental": false, - "tsBuildInfoFile": null + "tsBuildInfoFile": null, + "rootDir": "./" }, - "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts"], + "exclude": ["./test/**/*.ts"], "include": [ - "stories/**/*.stories.ts", - "src/**/*.stories.ts", - "src/**/*.stories.js", - "src/**/*.stories.jsx", - "src/**/*.stories.tsx", - "src/**/*.stories.mdx", - ".storybook/*.js", - ".storybook/*.ts" + "./stories/**/*.stories.ts", + "./src/**/*.ts", + "./src/*.ts", + "./.storybook/*.js", + "./.storybook/*.ts", ] } diff --git a/tools/oscd/src/generators/component/files/typedoc.json b/tools/oscd/src/generators/component/files/typedoc.json new file mode 100644 index 0000000..5adfb61 --- /dev/null +++ b/tools/oscd/src/generators/component/files/typedoc.json @@ -0,0 +1,4 @@ +{ + "entryPoints": ["src/index.ts"], + "out": "docs" +} \ No newline at end of file diff --git a/tools/oscd/src/generators/component/files/web-test-runner.config.js b/tools/oscd/src/generators/component/files/web-test-runner.config.js index 6e09b70..5e7ab3f 100644 --- a/tools/oscd/src/generators/component/files/web-test-runner.config.js +++ b/tools/oscd/src/generators/component/files/web-test-runner.config.js @@ -19,10 +19,12 @@ const filteredLogs = [ ]; const browsers = [ - playwrightLauncher({ product: 'chromium' }), - playwrightLauncher({ product: 'firefox' }), - playwrightLauncher({ product: 'webkit' }), - ]; + playwrightLauncher({ + product: 'chromium', + }), + playwrightLauncher({ product: 'firefox' }), + playwrightLauncher({ product: 'webkit' }), +]; function defaultGetImageDiff({ baselineImage, image, options }) { let error = ''; @@ -47,7 +49,14 @@ function defaultGetImageDiff({ baselineImage, image, options }) { const diff = new PNG({ width, height }); - const numDiffPixels = pixelmatch(basePng.data, png.data, diff.data, width, height, options); + const numDiffPixels = pixelmatch( + basePng.data, + png.data, + diff.data, + width, + height, + options + ); const diffPercentage = (numDiffPixels / (width * height)) * 100; return { @@ -62,11 +71,11 @@ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({ visualRegressionPlugin({ update: process.argv.includes('--update-visual-baseline'), getImageDiff: (options) => { - const result = defaultGetImageDiff(options); + const result = defaultGetImageDiff(options); if (result.diffPercentage < thresholdPercentage) result.diffPercentage = 0; return result; - } + }, }), ], @@ -76,7 +85,7 @@ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({ { name: 'visual', files: 'dist/**/*.test.js', - testRunnerHtml: testFramework => ` + testRunnerHtml: (testFramework) => ` @@ -139,7 +148,10 @@ export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({ /** Filter out lit dev mode logs */ filterBrowserLogs(log) { for (const arg of log.args) { - if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) { + if ( + typeof arg === 'string' && + filteredLogs.some((l) => arg.includes(l)) + ) { return false; } } diff --git a/tools/oscd/src/generators/component/generator.ts b/tools/oscd/src/generators/component/generator.ts index be530f6..3bf44f3 100644 --- a/tools/oscd/src/generators/component/generator.ts +++ b/tools/oscd/src/generators/component/generator.ts @@ -15,6 +15,12 @@ export async function componentGenerator( ) { const projectRoot = `components/${options.name}`; + const contents = tree.read('CODEOWNERS').toString(); + + const newContents = [contents, `/${projectRoot} ${options.codeOwner}`]; + + tree.write('CODEOWNERS', newContents.join('\n')); + addProjectConfiguration(tree, options.name, { root: projectRoot, projectType: 'library', diff --git a/tools/oscd/src/generators/component/schema.d.ts b/tools/oscd/src/generators/component/schema.d.ts index 9713e44..5f2783e 100644 --- a/tools/oscd/src/generators/component/schema.d.ts +++ b/tools/oscd/src/generators/component/schema.d.ts @@ -1,3 +1,4 @@ export interface OscdComponentGeneratorSchema { name: string; + codeOwner: string; } diff --git a/tools/oscd/src/generators/component/schema.json b/tools/oscd/src/generators/component/schema.json index b3720ce..2db4b0c 100644 --- a/tools/oscd/src/generators/component/schema.json +++ b/tools/oscd/src/generators/component/schema.json @@ -12,9 +12,16 @@ "index": 0 }, "x-prompt": "What name would you like to use?" + }, + "codeOwner": { + "type": "string", + "description": "Who is the codeowner?", + "x-prompt": "Who is the codeOwner?", + "pattern": "@\\S+" } }, "required": [ - "name" + "name", + "codeOwner" ] } \ No newline at end of file diff --git a/tools/oscd/src/generators/status/generator.ts b/tools/oscd/src/generators/status/generator.ts new file mode 100644 index 0000000..a0e463b --- /dev/null +++ b/tools/oscd/src/generators/status/generator.ts @@ -0,0 +1,34 @@ +import { + addProjectConfiguration, + formatFiles, + generateFiles, + Tree, + names, + updateJson, +} from '@nx/devkit'; +import * as path from 'path'; +import { env } from 'process'; +import { OscdStatusGeneratorSchema } from './schema'; + +export async function statusGenerator( + tree: Tree, + options: OscdStatusGeneratorSchema +) { + await updateJson( + tree, + path.join('components', options.project, 'package.json'), + (pckgJson) => { + if (!Object.keys(pckgJson).includes('oscd')) { + pckgJson['oscd'] = {}; + } + + pckgJson['oscd'].status = options.status; + + return pckgJson; + } + ); + + await formatFiles(tree); +} + +export default statusGenerator; diff --git a/tools/oscd/src/generators/status/schema.d.ts b/tools/oscd/src/generators/status/schema.d.ts new file mode 100644 index 0000000..219fc32 --- /dev/null +++ b/tools/oscd/src/generators/status/schema.d.ts @@ -0,0 +1,4 @@ +export interface OscdStatusGeneratorSchema { + status: string; + project: string; +} diff --git a/tools/oscd/src/generators/status/schema.json b/tools/oscd/src/generators/status/schema.json new file mode 100644 index 0000000..3336e41 --- /dev/null +++ b/tools/oscd/src/generators/status/schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/schema", + "$id": "OscdStatus", + "title": "", + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": { + "message": "What status is the component in?", + "type": "list", + "items": [ "WIP", "beta", "stable", "deprecated" ] + } + }, + "project": { + "type": "string", + "description": "The project where the component will be located.", + "x-prompt": "Which project will this component be located in?", + "x-dropdown": "projects" + } + }, + "required": [ + "status" + ] +} diff --git a/tools/scripts/package.json b/tools/scripts/package.json new file mode 100644 index 0000000..5dfcf17 --- /dev/null +++ b/tools/scripts/package.json @@ -0,0 +1,22 @@ +{ + "name": "@oscd/scripts", + "version": "1.0.0", + "description": "Various Oscd Scripts", + "scripts": { + "readme": "ts-node src/markdown.ts", + "component:readme": "ts-node src/component-markdown.ts", + "component:doc": "ts-node src/component-jsdoc.ts" + }, + "author": "OpenSCD", + "license": "ISC", + "dependencies": { + "mdast-builder": "^1.1.1", + "mdast-util-to-markdown": "^2.1.0", + "ts-markdown": "^0.3.0-beta.1", + "ts-morph": "^19.0.0" + }, + "devDependencies": { + "ts-node": "^10.9.1", + "typescript": "^5.1.6" + } +} diff --git a/tools/scripts/src/component-jsdoc.ts b/tools/scripts/src/component-jsdoc.ts new file mode 100644 index 0000000..42b30f4 --- /dev/null +++ b/tools/scripts/src/component-jsdoc.ts @@ -0,0 +1,68 @@ +import path from 'path'; +import fs from 'fs'; +import { getComponentDirs, getComponentNames, rootDir } from './utils/utils'; +import { Project, ScriptTarget } from 'ts-morph'; +import { cwd } from 'process'; + +const getFiles = (dir: string, files: string[] = []): string[] => { + const fileList = fs.readdirSync(dir); + + fileList.forEach((file) => { + const name = path.join(dir, file); + if (fs.statSync(name).isDirectory()) { + getFiles(dir, files); + } else { + files.push(name); + } + }); + + return files; +}; + +const project = new Project({ + compilerOptions: { + target: ScriptTarget.ESNext, + }, +}); + +getComponentNames().forEach((componentName) => { + const project = new Project({ + tsConfigFilePath: `../../components/${componentName}/tsconfig.json`, + }); + + project + .getSourceFiles() + .flatMap((sourceFile) => sourceFile.getClasses()) + + .forEach((clazz) => { + console.log(clazz.getName()); + clazz + .getInstanceProperties() + .filter((instanceProperty) => instanceProperty.getDecorator('property')) + .forEach((instanceProperty) => { + console.log(instanceProperty.getName()); + + const comment = instanceProperty + .getLeadingCommentRanges() + .map((cr) => cr.getText().trim()) + .map((line) => line.trim()) + .map((line) => line.replace(`\t`, '')) + .join(''); + + console.log(comment); + }); + }); +}); + +/* +getComponentDirs().forEach((componentDir) => { + console.log(componentDir); + + const srcDir: string = path.join(componentDir, 'src'); + + //const sourceFiles = project.getSourceFiles(`${srcDir}/**ts`); + + //console.log(sourceFiles); +}); + +*/ diff --git a/tools/scripts/src/component-markdown.ts b/tools/scripts/src/component-markdown.ts new file mode 100644 index 0000000..a1f4b56 --- /dev/null +++ b/tools/scripts/src/component-markdown.ts @@ -0,0 +1,144 @@ +import path from 'path'; +import fs from 'fs'; + +import { + tsMarkdown, + MarkdownEntryOrPrimitive, + TableEntry, + H1Entry, + ImageEntry, +} from 'ts-markdown'; +import { + getComponentDirs, + readPackageJson, + hasFile, + readFile, +} from './utils/utils'; +import { readJsonFile } from '@nx/devkit'; + +const getCustomElements = (componentDir: string): any[] => { + const customElementsJsonPath = path.join( + componentDir, + 'custom-elements.json' + ); + if (hasFile(customElementsJsonPath)) { + const customElementsJson = readJsonFile(customElementsJsonPath); + return customElementsJson.modules + .flatMap((module: any) => module.declarations) + .filter((declaration: any) => declaration.kind === 'class') + .filter((declaration: any) => declaration.customElement); + } + return []; +}; + +const generateCustomElementSection = ( + componentDir: string, + customElement: any, + packageJson: any +): MarkdownEntryOrPrimitive[] => { + return [ + generateHeader(customElement, packageJson.version, packageJson.oscd.status), + { + hr: true, + }, + getIntro(componentDir), + { + text: '', + }, + { + h2: 'Example', + }, + getExample(componentDir), + { + hr: true, + }, + { + h3: 'Attributes', + }, + generateAttributesTable(customElement), + { + h3: 'Css Properties', + }, + generateCssPropertiesTable(customElement), + ]; +}; + +const generateHeader = ( + customElement: any, + version: string, + status: string +): H1Entry => { + const color: string = + status === 'stable' + ? '66bf3b' + : status === 'beta' + ? 'ea9e08' + : status === 'WIP' + ? '3b72bf' + : status === 'deprecated' + ? 'bf3b3b' + : 'ababab'; + + return { + h1: `\`<${customElement.tagName}>\` ![NPM](https://img.shields.io/badge/NPM-${version}-cb0001) ![Status](https://img.shields.io/badge/${status}-${color})`, + }; +}; + +const getIntro = (componentDir: string): string => { + const file: string = path.join(componentDir, 'INTRO.md'); + + return hasFile(file) ? readFile(file) : ''; +}; + +const getExample = (componentDir: string): string => { + const file: string = path.join(componentDir, 'EXAMPLE.md'); + + return hasFile(file) ? readFile(file) : ''; +}; + +const generateAttributesTable = (customElement: any): TableEntry => { + return { + table: { + rows: (customElement.attributes || []).map((attribute: any) => { + return [ + attribute.name, + attribute.type?.text || '', + attribute.description || '', + ]; + }), + columns: ['Name', 'Type', 'Description'], + }, + }; +}; + +const generateCssPropertiesTable = (customElement: any): TableEntry => { + return { + table: { + rows: (customElement.cssProperties || []).map((property: any) => { + return [ + property['name'], + property['default'] || '', + property['description'] || '', + ]; + }), + columns: ['Name', 'Default', 'Description'], + }, + }; +}; + +const generateReadme = (componentDir: string): void => { + const packageJson = readPackageJson(componentDir); + const readme: MarkdownEntryOrPrimitive[] = getCustomElements( + componentDir + ).flatMap((customElement) => + generateCustomElementSection(componentDir, customElement, packageJson) + ); + + const res = tsMarkdown(readme); + + fs.writeFileSync(path.join(componentDir, 'README.md'), res, { + encoding: 'utf8', + }); +}; + +getComponentDirs().forEach((componentDir) => generateReadme(componentDir)); diff --git a/tools/scripts/src/markdown.ts b/tools/scripts/src/markdown.ts new file mode 100644 index 0000000..0717a9f --- /dev/null +++ b/tools/scripts/src/markdown.ts @@ -0,0 +1,92 @@ +import path from 'path'; +import fs from 'fs'; + +import { tsMarkdown, MarkdownEntryOrPrimitive, TableEntry } from 'ts-markdown'; +import { getComponentDirs, readPackageJson, rootDir } from './utils/utils'; + +const generateComponentsTable = (): TableEntry => { + return { + table: { + columns: ['Name', 'Status', 'Version'], + rows: getComponentDirs().map((componentDir) => { + const pckgJson = readPackageJson(componentDir); + + return [ + { + link: { + href: `./components/${componentDir}/README.md`, + text: pckgJson.name, + }, + }, + pckgJson['oscd'].status || '-', + pckgJson.version, + ]; + }), + }, + }; +}; + +const generateScriptsTable = (): TableEntry => { + return { + table: { + columns: ['Name', 'Description', 'Properties'], + rows: [ + ['npm run generate:component', 'Scaffolds a new component', 'See CLI'], + [ + 'npx nx storybook ', + 'Run Storybook for a specific component', + 'component', + ], + ['npm run build:all', 'Builds all the components', '-'], + [ + 'npx nx graph', + 'Creates a visual graph for all the component dependencies', + '-', + ], + [ + 'npm run documentation', + 'Updates the documentation per component and the global README.md', + '-', + ], + ], + }, + }; +}; + +const readme: MarkdownEntryOrPrimitive[] = [ + { + h1: 'Oscd Components', + }, + { + p: 'Oscd Components are the building blocks to create an OpenSCD Plugin. OSCD Components are custom WebComponents built in Lit, accessable in any modern browser', + }, + { + blockquote: 'Check out the getting started guide or the documentation', + }, + { + hr: true, + }, + { + h2: 'Components', + }, + { + p: '', + }, + generateComponentsTable(), + { + hr: true, + }, + { + h2: 'Scripts', + }, + { + p: '', + }, + generateScriptsTable(), +]; + +const res = tsMarkdown(readme); + +fs.writeFileSync(path.join(rootDir, 'README.md'), res, { + encoding: 'utf8', +}); diff --git a/tools/scripts/src/utils/utils.ts b/tools/scripts/src/utils/utils.ts new file mode 100644 index 0000000..74f2b34 --- /dev/null +++ b/tools/scripts/src/utils/utils.ts @@ -0,0 +1,36 @@ +import path from 'path'; +import fs from 'fs'; + +export const rootDir = path.join(__dirname, '../', '../', '../', '../'); + +export const getComponentNames = (): string[] => { + return fs + .readdirSync(path.join(rootDir, 'components')) + .filter((componentName) => + fs.existsSync( + path.join(rootDir, 'components', componentName, 'package.json') + ) + ); +}; + +export const getComponentDirs = (): string[] => { + return getComponentNames().map((componentName) => + path.join(rootDir, 'components', componentName) + ); +}; + +export const readPackageJson = (componentDir: string): any => { + return readJsonFile(path.join(componentDir, 'package.json')); +}; + +export const hasFile = (file: string): boolean => { + return fs.existsSync(file); +}; + +export const readFile = (file: string): string => { + return fs.readFileSync(file, { encoding: 'utf-8' }); +}; + +export const readJsonFile = (file: string): any => { + return JSON.parse(readFile(file)); +}; diff --git a/tools/scripts/tsconfig.json b/tools/scripts/tsconfig.json new file mode 100644 index 0000000..5122a0b --- /dev/null +++ b/tools/scripts/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "target": "ESNext", + "module": "CommonJS", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true + } +} diff --git a/tools/theme/README.md b/tools/theme/README.md new file mode 100644 index 0000000..1f1cbcc --- /dev/null +++ b/tools/theme/README.md @@ -0,0 +1,20 @@ +# OSCD Themer + +This script creates CSS and ES variables for a Theme for OSCD Components. + +It looks for Design Tokens in the `theme/[THEME_NAME]` folder. +The default theme name is `OSCD`. + +--- +### Usage + +You can run the script with the following command: + +```bash +npm run build +``` + +If you want to create your custom Theme, you can give the name as an argument: +```bash +npm run build -- --theme=MyCustomTheme +``` \ No newline at end of file diff --git a/tools/theme/package.json b/tools/theme/package.json new file mode 100644 index 0000000..e9d0eb1 --- /dev/null +++ b/tools/theme/package.json @@ -0,0 +1,16 @@ +{ + "name": "@oscd/theme", + "version": "1.0.0", + "description": "Oscd Theming", + "scripts": { + "build": "ts-node src/index.ts" + }, + "author": "OpenSCD", + "license": "ISC", + "devDependencies": { + "style-dictionary": "^3.8.0", + "ts-node": "^10.9.1", + "typescript": "^5.1.6", + "yargs": "^17.7.2" + } +} diff --git a/tools/theme/src/index.ts b/tools/theme/src/index.ts new file mode 100644 index 0000000..d831512 --- /dev/null +++ b/tools/theme/src/index.ts @@ -0,0 +1,60 @@ +#!/usr/bin/env node + +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; + +import StyleDictionary from 'style-dictionary'; + +interface Args { + theme: string; +} + +const args: Args = yargs(hideBin(process.argv)) + .options({ + theme: { + type: 'string', + default: 'oscd', + demandOption: true, + }, + }) + .parseSync(); + +const rootFolder = '../../'; + +const themeName = args.theme; + +StyleDictionary.extend({ + source: [`${rootFolder}/themes/tokens/${themeName}/**/*.json`], + platforms: { + scss: { + transformGroup: 'scss', + buildPath: `${rootFolder}/themes/built/${themeName}/`, + files: [ + { + destination: 'variables.scss', + format: 'scss/variables', + }, + ], + }, + css: { + transformGroup: 'css', + buildPath: `${rootFolder}/themes/built/${themeName}/`, + files: [ + { + destination: 'variables.css', + format: 'css/variables', + }, + ], + }, + js: { + transformGroup: 'js', + buildPath: `${rootFolder}/themes/built/${themeName}/`, + files: [ + { + format: 'javascript/es6', + destination: 'variables.js', + }, + ], + }, + }, +}).buildAllPlatforms(); diff --git a/tools/theme/tsconfig.json b/tools/theme/tsconfig.json new file mode 100644 index 0000000..5122a0b --- /dev/null +++ b/tools/theme/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "target": "ESNext", + "module": "CommonJS", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true + } +} diff --git a/tools/utils/package.json b/tools/utils/package.json new file mode 100644 index 0000000..0a56b3b --- /dev/null +++ b/tools/utils/package.json @@ -0,0 +1,11 @@ +{ + "name": "@oscd/utils", + "version": "0.0.1", + "type": "commonjs", + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "build": "tsc" + } +} diff --git a/tools/utils/src/index.ts b/tools/utils/src/index.ts new file mode 100644 index 0000000..24bbb5c --- /dev/null +++ b/tools/utils/src/index.ts @@ -0,0 +1 @@ +export * from './storybook'; diff --git a/tools/utils/src/storybook/create-badge.ts b/tools/utils/src/storybook/create-badge.ts new file mode 100644 index 0000000..e87de71 --- /dev/null +++ b/tools/utils/src/storybook/create-badge.ts @@ -0,0 +1,6 @@ +export const createBadge = (pckgeJson: Object): string => { + if (Object.keys(pckgeJson).includes('oscd')) { + return pckgeJson['oscd'].status; + } + return ''; +}; diff --git a/tools/utils/src/storybook/index.ts b/tools/utils/src/storybook/index.ts new file mode 100644 index 0000000..00e4543 --- /dev/null +++ b/tools/utils/src/storybook/index.ts @@ -0,0 +1 @@ +export * from './create-badge'; diff --git a/tools/utils/tsconfig.json b/tools/utils/tsconfig.json new file mode 100644 index 0000000..5d91086 --- /dev/null +++ b/tools/utils/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "es2018", + "module": "esnext", + "moduleResolution": "node", + "noEmitOnError": true, + "lib": ["es2018", "dom"], + "rootDir": "./src", + "outDir": "./dist", + "declaration": true, + "skipLibCheck": true, + + } +}