From d2493bc545a75634f45c7eacec459d08d0493aee Mon Sep 17 00:00:00 2001 From: Vincent Scavinner Date: Thu, 26 Oct 2023 16:01:08 +0200 Subject: [PATCH] feat: add glint to ember-prismic-dom --- .gitignore | 1 + ember-prismic-dom/.eslintignore | 1 + ember-prismic-dom/.prettierignore | 1 + ember-prismic-dom/package.json | 26 ++- ember-prismic-dom/rollup.config.mjs | 22 +-- .../unpublished-development-types/index.d.ts | 8 + ember-prismic-dom/tsconfig.json | 3 + pnpm-lock.yaml | 148 +++++++++++++++--- 8 files changed, 171 insertions(+), 39 deletions(-) diff --git a/.gitignore b/.gitignore index ec933ae1..3671a941 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ # compiled output dist/ .pnpm-store/ +declarations/ # dependencies node_modules/ diff --git a/ember-prismic-dom/.eslintignore b/ember-prismic-dom/.eslintignore index e69140be..4e982747 100644 --- a/ember-prismic-dom/.eslintignore +++ b/ember-prismic-dom/.eslintignore @@ -3,6 +3,7 @@ # compiled output /dist/ +/declarations/ # misc /coverage/ diff --git a/ember-prismic-dom/.prettierignore b/ember-prismic-dom/.prettierignore index 4178fd57..2d1b8715 100644 --- a/ember-prismic-dom/.prettierignore +++ b/ember-prismic-dom/.prettierignore @@ -4,6 +4,7 @@ # compiled output /dist/ +/declarations/ /tmp/ # dependencies diff --git a/ember-prismic-dom/package.json b/ember-prismic-dom/package.json index d4422b89..052e8413 100644 --- a/ember-prismic-dom/package.json +++ b/ember-prismic-dom/package.json @@ -10,6 +10,7 @@ "author": "", "files": [ "addon-main.cjs", + "declarations", "dist" ], "scripts": { @@ -18,9 +19,12 @@ "lint:fix": "concurrently 'pnpm:lint:*:fix' --names 'fix:'", "lint:hbs": "ember-template-lint . --no-error-on-unmatched-pattern", "lint:js": "eslint . --cache", + "lint:types": "glint", "lint:hbs:fix": "ember-template-lint . --fix --no-error-on-unmatched-pattern", "lint:js:fix": "eslint . --fix", - "start": "rollup --config --watch", + "start": "concurrently 'pnpm:start:*'", + "start:js": "rollup --config --watch --no-watch.clearScreen", + "start:types": "glint -d --watch", "test": "echo 'A v2 addon does not have tests, run tests in test-app'", "prepack": "rollup --config", "prepare": "rollup --config" @@ -38,6 +42,9 @@ "@babel/plugin-syntax-decorators": "^7.22.10", "@babel/runtime": "^7.23.2", "@embroider/addon-dev": "^3.0.0", + "@glint/core": "^1.2.1", + "@glint/environment-ember-loose": "^1.2.1", + "@glint/template": "^1.2.1", "@qonto/eslint-config-typescript": "1.0.0-rc.0", "@rollup/plugin-babel": "^6.0.4", "@tsconfig/ember": "^3.0.1", @@ -73,10 +80,23 @@ } }, "exports": { - ".": "./dist/index.js", - "./*": "./dist/*.js", + ".": { + "types": "./declarations/index.d.ts", + "default": "./dist/index.js" + }, + "./*": { + "types": "./declarations/*.d.ts", + "default": "./dist/*.js" + }, "./addon-main.js": "./addon-main.cjs" }, + "typesVersions": { + "*": { + "*": [ + "declarations/*" + ] + } + }, "peerDependencies": { "ember-source": "^3.28.0 || ^4.0.0" } diff --git a/ember-prismic-dom/rollup.config.mjs b/ember-prismic-dom/rollup.config.mjs index 48bc7650..1134d54d 100644 --- a/ember-prismic-dom/rollup.config.mjs +++ b/ember-prismic-dom/rollup.config.mjs @@ -1,10 +1,10 @@ -import { babel } from "@rollup/plugin-babel"; -import copy from "rollup-plugin-copy"; -import { Addon } from "@embroider/addon-dev/rollup"; +import { babel } from '@rollup/plugin-babel'; +import copy from 'rollup-plugin-copy'; +import { Addon } from '@embroider/addon-dev/rollup'; const addon = new Addon({ - srcDir: "src", - destDir: "dist", + srcDir: 'src', + destDir: 'dist', }); export default { @@ -15,12 +15,12 @@ export default { plugins: [ // These are the modules that users should be able to import from your // addon. Anything not listed here may get optimized away. - addon.publicEntrypoints(["index.js", "**/*.js"]), + addon.publicEntrypoints(['index.js', '**/*.js']), // These are the modules that should get reexported into the traditional // "app" tree. Things in here should also be in publicEntrypoints above, but // not everything in publicEntrypoints necessarily needs to go here. - addon.appReexports(["components/**/*.js", "helpers/**/*.js"]), + addon.appReexports(['components/**/*.js', 'helpers/**/*.js']), // Follow the V2 Addon rules about dependencies. Your code can import from // `dependencies` and `peerDependencies` as well as standard Ember-provided @@ -34,7 +34,7 @@ export default { // By default, this will load the actual babel config from the file // babel.config.json. babel({ - babelHelpers: "bundled", + babelHelpers: 'bundled', }), // Ensure that standalone .hbs files are properly integrated as Javascript. @@ -42,7 +42,7 @@ export default { // addons are allowed to contain imports of .css files, which we want rollup // to leave alone and keep in the published output. - addon.keepAssets(["**/*.css"]), + addon.keepAssets(['**/*.css']), // Remove leftover build artifacts when starting a new build. addon.clean(), @@ -50,8 +50,8 @@ export default { // Copy Readme and License into published package copy({ targets: [ - { src: "../README.md", dest: "." }, - { src: "../LICENSE.md", dest: "." }, + { src: '../README.md', dest: '.' }, + { src: '../LICENSE.md', dest: '.' }, ], }), ], diff --git a/ember-prismic-dom/src/unpublished-development-types/index.d.ts b/ember-prismic-dom/src/unpublished-development-types/index.d.ts index 2109bac6..e415a720 100644 --- a/ember-prismic-dom/src/unpublished-development-types/index.d.ts +++ b/ember-prismic-dom/src/unpublished-development-types/index.d.ts @@ -1,2 +1,10 @@ +import '@glint/environment-ember-loose'; import 'ember-source/types'; import 'ember-source/types/preview'; + +declare module '@glint/environment-ember-loose/registry' { + export default interface Registry { + // Add any registry entries from other addons here that your addon itself uses (in non-strict mode templates) + // See https://typed-ember.gitbook.io/glint/using-glint/ember/using-addons + } +} diff --git a/ember-prismic-dom/tsconfig.json b/ember-prismic-dom/tsconfig.json index 777f9a12..fa7eb7fe 100644 --- a/ember-prismic-dom/tsconfig.json +++ b/ember-prismic-dom/tsconfig.json @@ -1,6 +1,9 @@ { "extends": "@tsconfig/ember/tsconfig.json", "include": ["src/**/*", "unpublished-development-types/**/*"], + "glint": { + "environment": "ember-loose" + }, "compilerOptions": { "allowJs": true, "declarationDir": "declarations", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a222078..165fbb5d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,10 +34,10 @@ importers: version: 1.1.0 ember-element-helper: specifier: ^0.8.5 - version: 0.8.5(ember-source@4.12.0) + version: 0.8.5(@glint/environment-ember-loose@1.2.1)(@glint/template@1.2.1)(ember-source@4.12.0) ember-source: specifier: ^3.28.0 || ^4.0.0 - version: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + version: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) devDependencies: '@babel/core': specifier: 7.23.2 @@ -60,6 +60,15 @@ importers: '@embroider/addon-dev': specifier: ^3.0.0 version: 3.0.0(rollup@3.22.0) + '@glint/core': + specifier: ^1.2.1 + version: 1.2.1(typescript@5.2.2) + '@glint/environment-ember-loose': + specifier: ^1.2.1 + version: 1.2.1(@glimmer/component@1.1.2)(@glint/template@1.2.1) + '@glint/template': + specifier: ^1.2.1 + version: 1.2.1 '@qonto/eslint-config-typescript': specifier: 1.0.0-rc.0 version: 1.0.0-rc.0(eslint@8.52.0)(typescript@5.2.2) @@ -153,7 +162,7 @@ importers: version: 8.2.2 ember-auto-import: specifier: ^2.6.3 - version: 2.6.3(webpack@5.89.0) + version: 2.6.3(@glint/template@1.2.1)(webpack@5.89.0) ember-cli: specifier: ~4.12.2 version: 4.12.2 @@ -201,7 +210,7 @@ importers: version: 11.0.1(ember-source@4.12.0) ember-source: specifier: ~4.12.0 - version: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + version: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) ember-source-channel-url: specifier: ^3.0.0 version: 3.0.0 @@ -1579,14 +1588,14 @@ packages: ember-source: ^4.0.0 || ^5.0.0 dependencies: '@ember/test-waiters': 3.0.2 - '@embroider/macros': 1.13.2 + '@embroider/macros': 1.13.2(@glint/template@1.2.1) '@simple-dom/interface': 1.4.0 broccoli-debug: 0.6.5 broccoli-funnel: 3.0.8 - ember-auto-import: 2.6.3(webpack@5.89.0) + ember-auto-import: 2.6.3(@glint/template@1.2.1)(webpack@5.89.0) ember-cli-babel: 7.26.11 ember-cli-htmlbars: 6.3.0 - ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) transitivePeerDependencies: - '@glint/template' - supports-color @@ -1701,7 +1710,7 @@ packages: - supports-color dev: true - /@embroider/macros@1.11.0: + /@embroider/macros@1.11.0(@glint/template@1.2.1): resolution: {integrity: sha512-P/WSB+PqKSja5qXjYvhLyUM0ivcDoI9kkqs+R0GNujfVhS0EIIAMHfD9uHDBbhzFit39pT0QJqgcXGE2rprCPA==} engines: {node: 12.* || 14.* || >= 16} peerDependencies: @@ -1711,6 +1720,7 @@ packages: optional: true dependencies: '@embroider/shared-internals': 2.1.0 + '@glint/template': 1.2.1 assert-never: 1.2.1 babel-import-util: 1.3.0 ember-cli-babel: 7.26.11 @@ -1721,7 +1731,7 @@ packages: transitivePeerDependencies: - supports-color - /@embroider/macros@1.13.2: + /@embroider/macros@1.13.2(@glint/template@1.2.1): resolution: {integrity: sha512-AUgJ71xG8kjuTx8XB1AQNBiebJuXRfhcHr318dCwnQz9VRXdYSnEEqf38XRvGYIoCvIyn/3c72LrSwzaJqknOA==} engines: {node: 12.* || 14.* || >= 16} peerDependencies: @@ -1731,6 +1741,7 @@ packages: optional: true dependencies: '@embroider/shared-internals': 2.5.0 + '@glint/template': 1.2.1 assert-never: 1.2.1 babel-import-util: 2.0.1 ember-cli-babel: 7.26.11 @@ -1817,7 +1828,7 @@ packages: resolve: 1.22.3 dev: true - /@embroider/util@1.11.0(ember-source@4.12.0): + /@embroider/util@1.11.0(@glint/environment-ember-loose@1.2.1)(@glint/template@1.2.1)(ember-source@4.12.0): resolution: {integrity: sha512-v6Jdjl87jzsAtYgU/xkx+7CykoC06E6qd3j8ULe8jC8hVXKkjWR7Nks5D5V970/fravGd/FMOT3tVIF3Dj5yaw==} engines: {node: 14.* || >= 16} peerDependencies: @@ -1830,10 +1841,12 @@ packages: '@glint/template': optional: true dependencies: - '@embroider/macros': 1.13.2 + '@embroider/macros': 1.13.2(@glint/template@1.2.1) + '@glint/environment-ember-loose': 1.2.1(@glimmer/component@1.1.2)(@glint/template@1.2.1) + '@glint/template': 1.2.1 broccoli-funnel: 3.0.8 ember-cli-babel: 7.26.11 - ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: false @@ -1974,6 +1987,60 @@ packages: transitivePeerDependencies: - '@babel/core' + /@glint/core@1.2.1(typescript@5.2.2): + resolution: {integrity: sha512-25Zn65aLSN1M7s0D950sTNElZYRqa6HFA0xcT03iI/vQd1F6c3luMAXbFrsTSHlktZx2dqJ38c2dUnZJQBQgMw==} + hasBin: true + peerDependencies: + typescript: '>=4.8.0' + dependencies: + '@glimmer/syntax': 0.84.3 + escape-string-regexp: 4.0.0 + semver: 7.5.4 + silent-error: 1.1.1 + typescript: 5.2.2 + uuid: 8.3.2 + vscode-languageserver: 8.1.0 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@glint/environment-ember-loose@1.2.1(@glimmer/component@1.1.2)(@glint/template@1.2.1): + resolution: {integrity: sha512-ZA0Ht7vwd1FosVLtMFrB2Er62P1v6yX/UuS6z9UVR6DMPfrL5qx6vef+EGJPLBrBKZMlm7zMB6Fyca201y4hDA==} + peerDependencies: + '@glimmer/component': ^1.1.2 + '@glint/template': ^1.2.1 + '@types/ember__array': ^4.0.2 + '@types/ember__component': ^4.0.10 + '@types/ember__controller': ^4.0.2 + '@types/ember__object': ^4.0.4 + '@types/ember__routing': ^4.0.11 + ember-cli-htmlbars: ^6.0.1 + ember-modifier: ^3.2.7 || ^4.0.0 + peerDependenciesMeta: + '@types/ember__array': + optional: true + '@types/ember__component': + optional: true + '@types/ember__controller': + optional: true + '@types/ember__object': + optional: true + '@types/ember__routing': + optional: true + ember-cli-htmlbars: + optional: true + ember-modifier: + optional: true + dependencies: + '@glimmer/component': 1.1.2(@babel/core@7.23.2) + '@glint/template': 1.2.1 + + /@glint/template@1.2.1: + resolution: {integrity: sha512-rlYy/93fAhYjXmTchWcwCpPFMfrqBYEskzbDYawS2oz4DVwtf4fOITLKB0QddQMI7WUCjgXAiIGZqcNa/R4YeQ==} + /@handlebars/parser@2.0.0: resolution: {integrity: sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA==} dev: true @@ -5483,7 +5550,7 @@ packages: /electron-to-chromium@1.4.537: resolution: {integrity: sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==} - /ember-auto-import@2.6.3(webpack@5.89.0): + /ember-auto-import@2.6.3(@glint/template@1.2.1)(webpack@5.89.0): resolution: {integrity: sha512-uLhrRDJYWCRvQ4JQ1e64XlSrqAKSd6PXaJ9ZsZI6Tlms9T4DtQFxNXasqji2ZRJBVrxEoLCRYX3RTldsQ0vNGQ==} engines: {node: 12.* || 14.* || >= 16} dependencies: @@ -5491,7 +5558,7 @@ packages: '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.2) '@babel/plugin-proposal-decorators': 7.23.2(@babel/core@7.23.2) '@babel/preset-env': 7.22.4(@babel/core@7.23.2) - '@embroider/macros': 1.11.0 + '@embroider/macros': 1.11.0(@glint/template@1.2.1) '@embroider/shared-internals': 2.5.0 babel-loader: 8.3.0(@babel/core@7.23.2)(webpack@5.89.0) babel-plugin-ember-modules-api-polyfill: 3.5.0 @@ -5530,7 +5597,7 @@ packages: ember-source: ^3.28.0 || >= 4.0.0 dependencies: ember-cli-babel: 7.26.11 - ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) git-repo-info: 2.1.1 transitivePeerDependencies: - supports-color @@ -6015,15 +6082,15 @@ packages: engines: {node: '>= 0.10.0'} dev: true - /ember-element-helper@0.8.5(ember-source@4.12.0): + /ember-element-helper@0.8.5(@glint/environment-ember-loose@1.2.1)(@glint/template@1.2.1)(ember-source@4.12.0): resolution: {integrity: sha512-yZYzuasn6ZC8Nwv0MpaLYGtm68ZxIBSNSe/CYxNWkDdgcuAb2lAG1gx37XkwBIiwPQET0W2agwq7++/HwdMF8g==} engines: {node: 14.* || 16.* || >= 18} peerDependencies: ember-source: ^3.8 || ^4.0.0 || >= 5.0.0 dependencies: '@embroider/addon-shim': 1.8.3 - '@embroider/util': 1.11.0(ember-source@4.12.0) - ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + '@embroider/util': 1.11.0(@glint/environment-ember-loose@1.2.1)(@glint/template@1.2.1)(ember-source@4.12.0) + ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) transitivePeerDependencies: - '@glint/environment-ember-loose' - '@glint/template' @@ -6075,7 +6142,7 @@ packages: '@embroider/addon-shim': 1.8.6 ember-cli-normalize-entity-name: 1.0.0 ember-cli-string-utils: 1.1.0 - ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -6087,7 +6154,7 @@ packages: ember-source: '>= 3.28.0' dependencies: '@embroider/addon-shim': 1.8.6 - ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -6101,9 +6168,9 @@ packages: dependencies: '@ember/test-helpers': 3.2.0(ember-source@4.12.0)(webpack@5.89.0) '@embroider/addon-shim': 1.8.6 - '@embroider/macros': 1.13.2 + '@embroider/macros': 1.13.2(@glint/template@1.2.1) ember-cli-test-loader: 3.1.0 - ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) qunit: 2.20.0 transitivePeerDependencies: - '@glint/template' @@ -6120,7 +6187,7 @@ packages: optional: true dependencies: ember-cli-babel: 7.26.11 - ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0) + ember-source: 4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0) transitivePeerDependencies: - supports-color dev: true @@ -6148,7 +6215,7 @@ packages: - encoding dev: true - /ember-source@4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(webpack@5.89.0): + /ember-source@4.12.0(@babel/core@7.23.2)(@glimmer/component@1.1.2)(@glint/template@1.2.1)(webpack@5.89.0): resolution: {integrity: sha512-h0lV902A4Mny2eiqXPy15uXXoCc7BnUegE4axLAy4IoxEkJ1o5h0aLJFiB4Tzb1htx8vgHjJz//Y5Jig7NSDTw==} engines: {node: '>= 14.*'} peerDependencies: @@ -6167,7 +6234,7 @@ packages: broccoli-funnel: 3.0.8 broccoli-merge-trees: 4.2.0 chalk: 4.1.2 - ember-auto-import: 2.6.3(webpack@5.89.0) + ember-auto-import: 2.6.3(@glint/template@1.2.1)(webpack@5.89.0) ember-cli-babel: 7.26.11 ember-cli-get-component-path-option: 1.0.0 ember-cli-is-package-missing: 1.0.0 @@ -13366,6 +13433,37 @@ packages: engines: {node: '>= 0.8'} dev: true + /vscode-jsonrpc@8.1.0: + resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} + engines: {node: '>=14.0.0'} + dev: true + + /vscode-languageserver-protocol@3.17.3: + resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} + dependencies: + vscode-jsonrpc: 8.1.0 + vscode-languageserver-types: 3.17.3 + dev: true + + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + dev: true + + /vscode-languageserver-types@3.17.3: + resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} + dev: true + + /vscode-languageserver@8.1.0: + resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==} + hasBin: true + dependencies: + vscode-languageserver-protocol: 3.17.3 + dev: true + + /vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + dev: true + /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin.