From a71c3955bc31176eafc308c2f07021ab8608cfb6 Mon Sep 17 00:00:00 2001 From: moreal Date: Thu, 25 Apr 2024 14:14:37 +0900 Subject: [PATCH] feat: separate chrono sdk --- content-scripts/.gitignore | 2 + content-scripts/package.json | 8 +- content-scripts/rollup.config.js | 15 +++ content-scripts/src/global.ts | 3 + content-scripts/src/injectsdk.ts | 50 +--------- content-scripts/tsconfig.json | 4 + packages/chrono-sdk/.gitignore | 1 + packages/chrono-sdk/package.json | 27 +++++ packages/chrono-sdk/src/chrono-wallet.ts | 40 ++++++++ packages/chrono-sdk/src/handler.ts | 55 +++++++++++ packages/chrono-sdk/src/index.ts | 8 ++ packages/chrono-sdk/tsconfig.json | 109 +++++++++++++++++++++ pnpm-lock.yaml | 119 ++++++++++++++++++++++- pnpm-workspace.yaml | 1 + 14 files changed, 391 insertions(+), 51 deletions(-) create mode 100644 content-scripts/.gitignore create mode 100644 content-scripts/rollup.config.js create mode 100644 content-scripts/src/global.ts create mode 100644 packages/chrono-sdk/.gitignore create mode 100644 packages/chrono-sdk/package.json create mode 100644 packages/chrono-sdk/src/chrono-wallet.ts create mode 100644 packages/chrono-sdk/src/handler.ts create mode 100644 packages/chrono-sdk/src/index.ts create mode 100644 packages/chrono-sdk/tsconfig.json diff --git a/content-scripts/.gitignore b/content-scripts/.gitignore new file mode 100644 index 0000000..182ca65 --- /dev/null +++ b/content-scripts/.gitignore @@ -0,0 +1,2 @@ +output +dist diff --git a/content-scripts/package.json b/content-scripts/package.json index c0b6f5c..b4658fb 100644 --- a/content-scripts/package.json +++ b/content-scripts/package.json @@ -5,12 +5,18 @@ "type": "module", "license": "GPL-3.0-only", "scripts": { - "build": "tsc --outDir ../build/content-scripts" + "build": "tsc && rollup --config" + }, + "dependencies": { + "@planetarium/chrono-sdk": "workspace:^" }, "devDependencies": { "@planetarium/bencodex": "^0.2.2", "@planetarium/tx": "^4.3.0", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-node-resolve": "^15.2.3", "@types/chrome": "^0.0.266", + "rollup": "^4.16.4", "typescript": "^5.4.5" } } diff --git a/content-scripts/rollup.config.js b/content-scripts/rollup.config.js new file mode 100644 index 0000000..8074cd6 --- /dev/null +++ b/content-scripts/rollup.config.js @@ -0,0 +1,15 @@ +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import commonjs from "@rollup/plugin-commonjs"; + +export default { + input: "src/global.ts", + output: { + dir: '../build/content-scripts', + format: 'iife' + }, + plugins: [nodeResolve({ + browser: true, + preferBuiltins: false, + }), + commonjs({ include: /node_modules/ })] +}; diff --git a/content-scripts/src/global.ts b/content-scripts/src/global.ts new file mode 100644 index 0000000..ce01617 --- /dev/null +++ b/content-scripts/src/global.ts @@ -0,0 +1,3 @@ +import { setupChronoSdk } from "@planetarium/chrono-sdk"; + +setupChronoSdk(); diff --git a/content-scripts/src/injectsdk.ts b/content-scripts/src/injectsdk.ts index 0bda474..831b61e 100644 --- a/content-scripts/src/injectsdk.ts +++ b/content-scripts/src/injectsdk.ts @@ -1,53 +1,5 @@ const scriptElement = document.createElement("script"); -scriptElement.textContent = ` -const eventHandlers = {}; -let messageId = 1; -window.addEventListener('message', function(event) { - if (event.source != window) - return; - - if (!event.data.type || event.data.type !== 'FROM_CHRONO') { - return; - } - - if (!event.data.messageId || !eventHandlers[event.data.messageId]) { - return; - } - - const { resolve, reject } = eventHandlers[event.data.messageId]; - if (event.data.error) { - reject(event.data.error); - } else { - resolve(event.data.result); - } - - delete eventHandlers[event.data.messageId]; -}); - -window.chronoWallet = { - sign(signer, action) { - return new Promise((resolve, reject) => { - const currentMessageId = messageId++; - eventHandlers[currentMessageId] = { resolve, reject }; - window.postMessage({ type: 'FROM_PAGE', method: 'sign', signer, action, messageId: currentMessageId, }, '*'); - }); - }, - listAccounts() { - return new Promise((resolve, reject) => { - const currentMessageId = messageId++; - eventHandlers[currentMessageId] = { resolve, reject }; - window.postMessage({ type: 'FROM_PAGE', method: 'listAccounts', messageId: currentMessageId, }, '*'); - }); - }, - getPublicKey(address) { - return new Promise((resolve, reject) => { - const currentMessageId = messageId++; - eventHandlers[currentMessageId] = { resolve, reject }; - window.postMessage({ type: 'FROM_PAGE', method: 'getPublicKey', address, messageId: currentMessageId, }, '*'); - }); - } -}; -`; +scriptElement.src = chrome.runtime.getURL("global.js"); const port = chrome.runtime.connect({ name: "content-script" diff --git a/content-scripts/tsconfig.json b/content-scripts/tsconfig.json index 258e69c..e1676ea 100644 --- a/content-scripts/tsconfig.json +++ b/content-scripts/tsconfig.json @@ -1,5 +1,9 @@ { + "include": [ + "src/injectsdk.ts" + ], "compilerOptions": { + "outDir": "../build/content-scripts", "module": "None", "target": "ESNext", "types": ["chrome"], diff --git a/packages/chrono-sdk/.gitignore b/packages/chrono-sdk/.gitignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/packages/chrono-sdk/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/packages/chrono-sdk/package.json b/packages/chrono-sdk/package.json new file mode 100644 index 0000000..1b591ba --- /dev/null +++ b/packages/chrono-sdk/package.json @@ -0,0 +1,27 @@ +{ + "name": "@planetarium/chrono-sdk", + "version": "0.1.0", + "description": "", + "type": "module", + "module": "dist/index.js", + "exports": { + ".": { + "default": "./dist/index.js" + } + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "tsc" + }, + "keywords": [], + "author": "Planetarium", + "license": "GPL-3.0-only", + "devDependencies": { + "typescript": "^5.4.5" + }, + "dependencies": { + "@planetarium/account": "3.9.2", + "@planetarium/bencodex": "^0.2.2", + "buffer": "^6.0.3" + } +} diff --git a/packages/chrono-sdk/src/chrono-wallet.ts b/packages/chrono-sdk/src/chrono-wallet.ts new file mode 100644 index 0000000..15a005d --- /dev/null +++ b/packages/chrono-sdk/src/chrono-wallet.ts @@ -0,0 +1,40 @@ +import { Address, PublicKey } from "@planetarium/account"; +import { Value, encode } from "@planetarium/bencodex"; +import { WindowMessageHandler } from "./handler"; +import { Buffer } from "buffer"; + +export class ChronoWallet { + constructor(private readonly handler: WindowMessageHandler) {} + + sign(signer: Address, action: Value): Promise { + return new Promise((resolve, reject) => { + this.handler.addEventListener( + { resolve: (value: string) => resolve(Buffer.from(value, "hex")), reject }, + { method: 'sign', signer: signer.toString(), action: Buffer.from(encode(action)).toString("hex") } + ); + }); + } + + listAccounts(): Promise { + return new Promise((resolve, reject) => { + this.handler.addEventListener( + { + resolve: (value: string[]) => resolve(value.map(x => Address.fromHex(x))), + reject + }, + { method: "listAccounts" }) + }); + } + + getPublicKey(address: Address): Promise { + return new Promise((resolve, reject) => { + this.handler.addEventListener( + { + resolve: (value: string) => resolve(PublicKey.fromHex(value, "uncompressed")), + reject + }, + { method: "getPublicKey", address: address.toString(), } + ); + }); + } +}; diff --git a/packages/chrono-sdk/src/handler.ts b/packages/chrono-sdk/src/handler.ts new file mode 100644 index 0000000..6d47a4e --- /dev/null +++ b/packages/chrono-sdk/src/handler.ts @@ -0,0 +1,55 @@ +type Handlers = { + resolve: (value: any) => void; + reject: (error: unknown) => void; +}; + +export class WindowMessageHandler { + private messageId: number; + private readonly eventHandlers: Map; + private readonly window: Window; + + constructor(window: Window) { + this.messageId = 1; + this.eventHandlers = new Map(); + this.window = window; + + window.addEventListener('message', this.handler); + } + + addEventListener(handlers: Handlers, message: { + method: string, + [key: string]: string, + }) { + const currentMessageId = this.messageId++; + this.eventHandlers.set(currentMessageId, handlers); + + this.window.postMessage({ + type: 'FROM_PAGE', + messageId: currentMessageId, + ...message, + }, '*'); + } + + private handler(event: MessageEvent) { + if (event.source != this.window) + return; + + if (!event.data.type || event.data.type !== 'FROM_CHRONO') { + return; + } + + const handlers = this.eventHandlers.get(event.data.messageId); + if (!event.data.messageId || !handlers) { + return; + } + + const { resolve, reject } = handlers; + if (event.data.error) { + reject(event.data.error); + } else { + resolve(event.data.result); + } + + this.eventHandlers.delete(event.data.messageId); + } +} diff --git a/packages/chrono-sdk/src/index.ts b/packages/chrono-sdk/src/index.ts new file mode 100644 index 0000000..175dcd7 --- /dev/null +++ b/packages/chrono-sdk/src/index.ts @@ -0,0 +1,8 @@ +import { ChronoWallet } from "./chrono-wallet"; +import { WindowMessageHandler } from "./handler"; + +export function setupChronoSdk() { + const handler = new WindowMessageHandler(window); + const chronoWallet = new ChronoWallet(handler); + (window as any).chronoWallet = chronoWallet; +} diff --git a/packages/chrono-sdk/tsconfig.json b/packages/chrono-sdk/tsconfig.json new file mode 100644 index 0000000..a168c71 --- /dev/null +++ b/packages/chrono-sdk/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": ["DOM", "ESNext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "ESNext", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "Node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "dist", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + "declarationDir": "dist", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c762942..b3dbaaa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,6 +91,10 @@ importers: version: 3.0.7(babel-core@7.0.0-bridge.0(@babel/core@7.24.4))(vue-template-compiler@2.7.16)(vue@3.4.24(typescript@5.4.5)) content-scripts: + dependencies: + '@planetarium/chrono-sdk': + specifier: workspace:^ + version: link:../packages/chrono-sdk devDependencies: '@planetarium/bencodex': specifier: ^0.2.2 @@ -98,9 +102,18 @@ importers: '@planetarium/tx': specifier: ^4.3.0 version: 4.4.1(@planetarium/account@3.9.2) + '@rollup/plugin-commonjs': + specifier: ^25.0.7 + version: 25.0.7(rollup@4.16.4) + '@rollup/plugin-node-resolve': + specifier: ^15.2.3 + version: 15.2.3(rollup@4.16.4) '@types/chrome': specifier: ^0.0.266 version: 0.0.266 + rollup: + specifier: ^4.16.4 + version: 4.16.4 typescript: specifier: ^5.4.5 version: 5.4.5 @@ -202,6 +215,22 @@ importers: specifier: ^5.2.0 version: 5.2.10(@types/node@20.12.7)(sass@1.75.0)(terser@4.8.1) + packages/chrono-sdk: + dependencies: + '@planetarium/account': + specifier: 3.9.2 + version: 3.9.2 + '@planetarium/bencodex': + specifier: ^0.2.2 + version: 0.2.2 + buffer: + specifier: ^6.0.3 + version: 6.0.3 + devDependencies: + typescript: + specifier: ^5.4.5 + version: 5.4.5 + popup: dependencies: '@mdi/font': @@ -1869,6 +1898,33 @@ packages: '@repeaterjs/repeater@3.0.5': resolution: {integrity: sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA==} + '@rollup/plugin-commonjs@25.0.7': + resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@15.2.3': + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.16.4': resolution: {integrity: sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==} cpu: [arm] @@ -2134,6 +2190,9 @@ packages: '@types/react@18.2.79': resolution: {integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==} + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -3214,6 +3273,10 @@ packages: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} @@ -5493,6 +5556,10 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -5589,6 +5656,9 @@ packages: is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -5644,6 +5714,9 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -11535,6 +11608,36 @@ snapshots: '@repeaterjs/repeater@3.0.5': {} + '@rollup/plugin-commonjs@25.0.7(rollup@4.16.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.16.4) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.30.10 + optionalDependencies: + rollup: 4.16.4 + + '@rollup/plugin-node-resolve@15.2.3(rollup@4.16.4)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.16.4) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 4.16.4 + + '@rollup/pluginutils@5.1.0(rollup@4.16.4)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.16.4 + '@rollup/rollup-android-arm-eabi@4.16.4': optional: true @@ -11792,6 +11895,8 @@ snapshots: '@types/prop-types': 15.7.12 csstype: 3.1.3 + '@types/resolve@1.20.2': {} + '@types/responselike@1.0.3': dependencies: '@types/node': 12.20.55 @@ -13373,6 +13478,8 @@ snapshots: dependencies: node-gyp-build: 4.8.0 + builtin-modules@3.3.0: {} + builtin-status-codes@3.0.0: {} busboy@1.6.0: @@ -15568,7 +15675,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.8 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 @@ -16210,6 +16317,10 @@ snapshots: is-buffer@2.0.5: {} + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + is-callable@1.2.7: {} is-ci@1.2.1: @@ -16293,6 +16404,8 @@ snapshots: dependencies: tslib: 2.6.2 + is-module@1.0.0: {} + is-nan@1.3.2: dependencies: call-bind: 1.0.7 @@ -16334,6 +16447,10 @@ snapshots: is-potential-custom-element-name@1.0.1: {} + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.5 + is-regex@1.1.4: dependencies: call-bind: 1.0.7 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 247c1c3..cd70fb9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,3 +4,4 @@ packages: - 'popup' - 'docs' - 'examples/**' + - 'packages/**'