├── .editorconfig ├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── example ├── README.md ├── child │ ├── index.html │ ├── package.json │ ├── src │ │ ├── App.vue │ │ ├── helpers.ts │ │ ├── index.ts │ │ └── types │ │ │ └── shims-vue.d.ts │ ├── tsconfig.json │ └── vite.config.ts └── parent │ ├── index.html │ ├── package.json │ ├── src │ ├── App.vue │ ├── index.ts │ └── types │ │ └── shims-vue.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── package.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── src ├── errors.ts ├── helpers.ts ├── index.ts └── types.ts ├── tsconfig.json └── vite.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: evilkiwi 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Node template 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | 9 | # Runtime data 10 | pids 11 | *.pid 12 | *.seed 13 | *.pid.lock 14 | 15 | # Directory for instrumented libs generated by jscoverage/JSCover 16 | lib-cov 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # nyc test coverage 22 | .nyc_output 23 | 24 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 25 | .grunt 26 | 27 | # Bower dependency directory (https://bower.io/) 28 | bower_components 29 | 30 | # node-waf configuration 31 | .lock-wscript 32 | 33 | # Compiled binary addons (https://nodejs.org/api/addons.html) 34 | build/Release 35 | 36 | # Dependency directories 37 | node_modules/ 38 | jspm_packages/ 39 | 40 | # TypeScript v1 declaration files 41 | typings/ 42 | 43 | # Optional npm cache directory 44 | .npm 45 | 46 | # Optional eslint cache 47 | .eslintcache 48 | 49 | # Optional REPL history 50 | .node_repl_history 51 | 52 | # Output of 'npm pack' 53 | *.tgz 54 | 55 | # Yarn Integrity file 56 | .yarn-integrity 57 | 58 | # dotenv environment variables file 59 | .env 60 | 61 | # parcel-bundler cache (https://parceljs.org/) 62 | .cache 63 | 64 | # next.js build output 65 | .next 66 | 67 | # nuxt.js build output 68 | .nuxt 69 | 70 | # vuepress build output 71 | .vuepress/dist 72 | 73 | # Serverless directories 74 | .serverless 75 | 76 | # IDE / Editor 77 | .idea 78 | 79 | # Service worker 80 | sw.* 81 | 82 | # Mac OSX 83 | .DS_Store 84 | 85 | # Vim swap files 86 | *.swp 87 | 88 | # devctl files 89 | .devctl-current.yaml 90 | .devctl-docker-compose.yaml 91 | .devctl-scripts.yaml 92 | .devctl/data 93 | 94 | # AWS Local 95 | .dynamodb 96 | 97 | # Vite 98 | .vite 99 | 100 | # Yarn 2 101 | .yarn/* 102 | !.yarn/patches 103 | !.yarn/releases 104 | !.yarn/plugins 105 | !.yarn/sdks 106 | !.yarn/versions 107 | .pnp.* 108 | 109 | # Turborepo 110 | .turbo 111 | 112 | build 113 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | .next 4 | .open-next 5 | .turbo 6 | build 7 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "pluginSearchDirs": false, 3 | "plugins": ["@ianvs/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"], 4 | "importOrder": [ 5 | "", 6 | "", 7 | "", 8 | "^@/(.*)$", 9 | "", 10 | "^[./]" 11 | ], 12 | "importOrderTypeScriptVersion": "5.0.0", 13 | "importOrderParserPlugins": ["typescript", "jsx", "decorators-legacy"], 14 | "jsxBracketSameLine": false, 15 | "quoteProps": "consistent", 16 | "bracketSameLine": false, 17 | "jsxSingleQuote": false, 18 | "trailingComma": "all", 19 | "bracketSpacing": true, 20 | "arrowParens": "avoid", 21 | "proseWrap": "always", 22 | "singleQuote": true, 23 | "printWidth": 140, 24 | "useTabs": false, 25 | "tabWidth": 2, 26 | "semi": true 27 | } 28 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "editor.codeActionsOnSave": { 4 | "source.fixAll": true 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 1.3.0 (2023-11-11) 2 | 3 | - Updated dependencies 4 | - Changed repo structure 5 | 6 | # 1.2.0 (2023-07-24) 7 | 8 | - Updated dependencies 9 | 10 | # 1.1.2 (2023-01-09) 11 | 12 | - Added cjs output 13 | 14 | # 1.1.1 (2022-11-22) 15 | 16 | - Move back to Evil Kiwi (`@evilkiwi/embed`) 17 | - Update dependencies 18 | 19 | # 1.1.0 (2022-11-15) 20 | 21 | - Updated dependencies 22 | - Move to `@oyed` 23 | - Move repository to PNPM 24 | 25 | # 1.0.25 (2022-01-18) 26 | 27 | - Improved logging 28 | - Updated build-time dependencies 29 | 30 | # 1.0.20 (2021-11-13) 31 | 32 | - Send a manual event on initialization to get around iFrames that are ready before we register the `load` listener 33 | 34 | # 1.0.19 (2021-10-19) 35 | 36 | - Wait for iFrame load event before registering window 37 | 38 | # 1.0.17 (2021-10-19) 39 | 40 | - Disallow Host-mode IPC from defaulting to `window` when an iFrame reference isn't available 41 | 42 | # 1.0.14 (2021-10-19) 43 | 44 | - Remove runtime debugging 45 | 46 | # 1.0.13 (2021-10-19) 47 | 48 | - Ensure correct statement chaining to prevent localStorage access if runtime debugging is disabled 49 | 50 | # 1.0.12 (2021-10-13) 51 | 52 | - Optionally allow runtime debugging 53 | 54 | # 1.0.11 (2021-10-13) 55 | 56 | - Updated dependencies 57 | - Improved Parent/Child example 58 | 59 | # 1.0.10 (2021-08-30) 60 | 61 | - Ensure Object payload can be serialized to JSON before sending 62 | 63 | # 1.0.8 (2021-07-31) 64 | 65 | - Added debug option 66 | 67 | # 1.0.7 (2021-07-25) 68 | 69 | - Fix the handling of asynchronous payloads 70 | - Includes serializing `Error` instances 71 | - Fix handling of multiple instances not triggering the correct async callback 72 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | [Discord](https://discord.gg/XMrHXtN). 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Evil Kiwi Open Source 2 | 3 | At Evil Kiwi we aim to give back to the Developer communities we engage in as often as possible - as such, 4 | we maintain various Open Source libraries and software, both related to the Evil Kiwi Ecosystem and otherwise. 5 | 6 | We're always welcome to feedback, PRs and constructive criticism of our software. 7 | 8 | ## Code of Conduct 9 | 10 | We employ the [Contributor Covenant 2.0](https://www.contributor-covenant.org/version/2/0/code_of_conduct/) 11 | Code of Conduct for our Open Source systems. By submitting PRs, Issues or contributing towards our software 12 | in any other means, you agree to follow the conduct laid out. 13 | 14 | Please let us know [via Discord](https://discord.gg/3S6AKZ2GR9) if you feel someone is not doing so. 15 | 16 | ## I have a question! 17 | 18 | Do not use the Issues section to ask questions regarding our Open Source software - instead, if you feel 19 | comfortable using Discord, [join ours](https://discord.gg/3S6AKZ2GR9) and ask any questions you may have in 20 | our `#open-source` channel. 21 | 22 | ## I've found an issue with the library/software 23 | 24 | In this case, feel free to open a [Bug Report](https://github.com/evilkiwi/embed/issues/new?assignees=&labels=&template=bug_report.md&title=) 25 | and fully explain the Issue to us. If you don't explain in enough detail, it makes it much harder to diagnose. 26 | 27 | Ideally we'd love a minimal set-up that reproduces the issue. 28 | 29 | ## I have a PR which fixes a bug/adds a new feature 30 | 31 | Great! We'd love to see it! 32 | 33 | - Open a PR against this repository 34 | - Explain in detail what the PR does and why you are submitting it 35 | - Add any additional info 36 | - For example, if this is a new feature, provide your fork with a working example 37 | 38 | ## Final notes 39 | 40 | From the Evil Kiwi Team, thank you for considering contributing to our Open Source software - we do our best 41 | to work on and maintain anything we feel would benefit the software, as well as requests from the community, 42 | but our priority is always based on the Evil Kiwi Ecosystem itself. Contributions are a great way to give back! 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 2 | 3 | Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this 4 | license document, but changing it is not allowed. 5 | 6 | Preamble 7 | 8 | The GNU General Public License is a free, copyleft license for software and other kinds of works. 9 | 10 | The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, 11 | the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains 12 | free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies 13 | also to any other work released this way by its authors. You can apply it to your programs, too. 14 | 15 | When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have 16 | the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want 17 | it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. 18 | 19 | To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have 20 | certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. 21 | 22 | For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms 23 | that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know 24 | their rights. 25 | 26 | Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License 27 | giving you legal permission to copy, distribute and/or modify it. 28 | 29 | For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and 30 | authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to 31 | authors of previous versions. 32 | 33 | Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer 34 | can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of 35 | such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have 36 | designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we 37 | stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. 38 | 39 | Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of 40 | software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program 41 | could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. 42 | 43 | The precise terms and conditions for copying, distribution and modification follow. 44 | 45 | TERMS AND CONDITIONS 46 | 47 | 0. Definitions. 48 | 49 | "This License" refers to version 3 of the GNU General Public License. 50 | 51 | "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. 52 | 53 | "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and 54 | "recipients" may be individuals or organizations. 55 | 56 | To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of 57 | an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. 58 | 59 | A "covered work" means either the unmodified Program or a work based on the Program. 60 | 61 | To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement 62 | under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution 63 | (with or without modification), making available to the public, and in some countries other activities as well. 64 | 65 | To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through 66 | a computer network, with no transfer of a copy, is not conveying. 67 | 68 | An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible 69 | feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the 70 | extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the 71 | interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 72 | 73 | 1. Source Code. 74 | 75 | The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of 76 | a work. 77 | 78 | A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of 79 | interfaces specified for a particular programming language, one that is widely used among developers working in that language. 80 | 81 | The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of 82 | packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major 83 | Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major 84 | Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) 85 | on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. 86 | 87 | The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable 88 | work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's 89 | System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but 90 | which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the 91 | work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as 92 | by intimate data communication or control flow between those subprograms and other parts of the work. 93 | 94 | The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. 95 | 96 | The Corresponding Source for a work in source code form is that same work. 97 | 98 | 2. Basic Permissions. 99 | 100 | All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated 101 | conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a 102 | covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your 103 | rights of fair use or other equivalent, as provided by copyright law. 104 | 105 | You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. 106 | You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with 107 | facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not 108 | control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and 109 | control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. 110 | 111 | Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes 112 | it unnecessary. 113 | 114 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 115 | 116 | No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 117 | of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. 118 | 119 | When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention 120 | is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or 121 | modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of 122 | technological measures. 123 | 124 | 4. Conveying Verbatim Copies. 125 | 126 | You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and 127 | appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive 128 | terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a 129 | copy of this License along with the Program. 130 | 131 | You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 132 | 133 | 5. Conveying Modified Source Versions. 134 | 135 | You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms 136 | of section 4, provided that you also meet all of these conditions: 137 | 138 | a) The work must carry prominent notices stating that you modified it, and giving a relevant date. 139 | 140 | b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This 141 | requirement modifies the requirement in section 4 to "keep intact all notices". 142 | 143 | c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will 144 | therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they 145 | are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have 146 | separately received it. 147 | 148 | d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive 149 | interfaces that do not display Appropriate Legal Notices, your work need not make them do so. 150 | 151 | A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and 152 | which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an 153 | "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users 154 | beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts 155 | of the aggregate. 156 | 157 | 6. Conveying Non-Source Forms. 158 | 159 | You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable 160 | Corresponding Source under the terms of this License, in one of these ways: 161 | 162 | a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the 163 | Corresponding Source fixed on a durable physical medium customarily used for software interchange. 164 | 165 | b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, 166 | valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who 167 | possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, 168 | on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically 169 | performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. 170 | 171 | c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is 172 | allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. 173 | 174 | d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the 175 | Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding 176 | Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different 177 | server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the 178 | object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to 179 | ensure that it is available for as long as needed to satisfy these requirements. 180 | 181 | e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of 182 | the work are being offered to the general public at no charge under subsection 6d. 183 | 184 | A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be 185 | included in conveying the object code work. 186 | 187 | A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, 188 | or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer 189 | product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" 190 | refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the 191 | particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the 192 | product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the 193 | product. 194 | 195 | "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install 196 | and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information 197 | must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because 198 | modification has been made. 199 | 200 | If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as 201 | part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a 202 | fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by 203 | the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified 204 | object code on the User Product (for example, the work has been installed in ROM). 205 | 206 | The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or 207 | updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. 208 | Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the 209 | rules and protocols for communication across the network. 210 | 211 | Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly 212 | documented (and with an implementation available to the public in source code form), and must require no special password or key for 213 | unpacking, reading or copying. 214 | 215 | 7. Additional Terms. 216 | 217 | "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. 218 | Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the 219 | extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used 220 | separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. 221 | 222 | When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. 223 | (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional 224 | permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. 225 | 226 | Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders 227 | of that material) supplement the terms of this License with terms: 228 | 229 | a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or 230 | 231 | b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices 232 | displayed by works containing it; or 233 | 234 | c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in 235 | reasonable ways as different from the original version; or 236 | 237 | d) Limiting the use for publicity purposes of names of licensors or authors of the material; or 238 | 239 | e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or 240 | 241 | f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with 242 | contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those 243 | licensors and authors. 244 | 245 | All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you 246 | received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further 247 | restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this 248 | License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does 249 | not survive such relicensing or conveying. 250 | 251 | If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional 252 | terms that apply to those files, or a notice indicating where to find the applicable terms. 253 | 254 | Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the 255 | above requirements apply either way. 256 | 257 | 8. Termination. 258 | 259 | You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify 260 | it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph 261 | of section 11). 262 | 263 | However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, 264 | unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to 265 | notify you of the violation by some reasonable means prior to 60 days after the cessation. 266 | 267 | Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by 268 | some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright 269 | holder, and you cure the violation prior to 30 days after your receipt of the notice. 270 | 271 | Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under 272 | this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same 273 | material under section 10. 274 | 275 | 9. Acceptance Not Required for Having Copies. 276 | 277 | You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work 278 | occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, 279 | nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do 280 | not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 281 | 282 | 10. Automatic Licensing of Downstream Recipients. 283 | 284 | Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and 285 | propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. 286 | 287 | An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an 288 | organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction 289 | who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the 290 | previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor 291 | has it or can get it with reasonable efforts. 292 | 293 | You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not 294 | impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation 295 | (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for 296 | sale, or importing the Program or any portion of it. 297 | 298 | 11. Patents. 299 | 300 | A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work 301 | thus licensed is called the contributor's "contributor version". 302 | 303 | A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or 304 | hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, 305 | but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of 306 | this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. 307 | 308 | Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to 309 | make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. 310 | 311 | In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent 312 | (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a 313 | party means to make such an agreement or commitment not to enforce a patent against the party. 314 | 315 | If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to 316 | copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, 317 | then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent 318 | license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license 319 | to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered 320 | work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country 321 | that you have reason to believe are valid. 322 | 323 | If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered 324 | work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a 325 | specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and 326 | works based on it. 327 | 328 | A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned 329 | on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you 330 | are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third 331 | party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would 332 | receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or 333 | copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, 334 | unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. 335 | 336 | Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise 337 | be available to you under applicable patent law. 338 | 339 | 12. No Surrender of Others' Freedom. 340 | 341 | If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do 342 | not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations 343 | under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to 344 | terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy 345 | both those terms and this License would be to refrain entirely from conveying the Program. 346 | 347 | 13. Use with the GNU Affero General Public License. 348 | 349 | Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under 350 | version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License 351 | will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 352 | 13, concerning interaction through a network will apply to the combination as such. 353 | 354 | 14. Revised Versions of this License. 355 | 356 | The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions 357 | will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. 358 | 359 | Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public 360 | License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or 361 | of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public 362 | License, you may choose any version ever published by the Free Software Foundation. 363 | 364 | If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public 365 | statement of acceptance of a version permanently authorizes you to choose that version for the Program. 366 | 367 | Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or 368 | copyright holder as a result of your choosing to follow a later version. 369 | 370 | 15. Disclaimer of Warranty. 371 | 372 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 373 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT 374 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND 375 | PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR 376 | CORRECTION. 377 | 378 | 16. Limitation of Liability. 379 | 380 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR 381 | CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES 382 | ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR 383 | LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY 384 | HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 385 | 386 | 17. Interpretation of Sections 15 and 16. 387 | 388 | If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, 389 | reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the 390 | Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 391 | 392 | END OF TERMS AND CONDITIONS 393 | 394 | How to Apply These Terms to Your New Programs 395 | 396 | If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it 397 | free software which everyone can redistribute and change under these terms. 398 | 399 | To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively 400 | state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. 401 | 402 | Copyright (C) 2023 Evil Kiwi Limited 403 | 404 | This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by 405 | the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 406 | 407 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 408 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 409 | 410 | You should have received a copy of the GNU General Public License along with this program. If not, see . 411 | 412 | Also add information on how to contact you by electronic and paper mail. 413 | 414 | If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: 415 | 416 | Copyright (C) 2023 Evil Kiwi Limited This program comes with ABSOLUTELY NO WARRANTY; for details type 417 | `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. 418 | 419 | The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's 420 | commands might be different; for a GUI interface, you would use an "about box". 421 | 422 | You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if 423 | necessary. For more information on this, and how to apply and follow the GNU GPL, see . 424 | 425 | The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine 426 | library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use 427 | the GNU Lesser General Public License instead of this License. But first, please read . 428 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | NPM 4 | 5 | 6 | Discord 7 | 8 | GPL-3.0-only 9 |

Embedded iFrame IPC for Vue 3

10 |
11 | 12 | `@evilkiwi/embed` provides a single Vue 3 hook which can be used to communicate between an iFrame and its parent via `postMessage` IPC. 13 | 14 | - `sync`/`async` messaging/responses 15 | - Configurable timeouts 16 | - Bi-directional communication 17 | - Cross-origin support 18 | - Same usage/API for both Host & Client 19 | - Support for enforcing origins for increased security 20 | - No limit to number of instances you can use/create at any given time 21 | - TypeScript 22 | - Tiny (1.73kb) 23 | 24 | ## Installation 25 | 26 | This package is available via NPM: 27 | 28 | ```bash 29 | yarn add @evilkiwi/embed 30 | 31 | # or 32 | 33 | npm install @evilkiwi/embed 34 | ``` 35 | 36 | ## Usage 37 | 38 | For this example, we'll assume the `host` is a webpage (`example.com`) and the `client` is a webpage embedded in an iFrame 39 | (`frame.example.com`). The only difference between a `host` and a `client` is that the `host` requires an iFrame `ref` for binding and 40 | sending the messages. 41 | 42 | ```vue 43 | /** * Host */ 44 |