{"id":15723199,"url":"https://github.com/potatojam/defold-ads-wrapper","last_synced_at":"2025-05-13T04:09:13.456Z","repository":{"id":161518658,"uuid":"446524905","full_name":"potatojam/defold-ads-wrapper","owner":"potatojam","description":"Universal wrapper for ADS on different platforms","archived":false,"fork":false,"pushed_at":"2025-01-10T17:26:21.000Z","size":253,"stargazers_count":19,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-13T04:09:06.143Z","etag":null,"topics":["admob","ads","defold","defold-library","defold-module","poki","unityads","yandex-games"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/potatojam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-10T17:46:51.000Z","updated_at":"2025-02-11T15:04:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"f9813fb8-d17f-43bf-b728-1f66a45ae474","html_url":"https://github.com/potatojam/defold-ads-wrapper","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/potatojam%2Fdefold-ads-wrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/potatojam%2Fdefold-ads-wrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/potatojam%2Fdefold-ads-wrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/potatojam%2Fdefold-ads-wrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/potatojam","download_url":"https://codeload.github.com/potatojam/defold-ads-wrapper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253870872,"owners_count":21976614,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admob","ads","defold","defold-library","defold-module","poki","unityads","yandex-games"],"created_at":"2024-10-03T22:10:38.118Z","updated_at":"2025-05-13T04:09:13.441Z","avatar_url":"https://github.com/potatojam.png","language":"Lua","funding_links":[],"categories":["Libraries"],"sub_categories":["Programming Language"],"readme":"![](docs/ads_wrapper.png)\n\n# Ads Wrapper for Defold\n\nAds Wrapper allows:\n\n* Use the same interface for working with different advertising services.\n* Advertising mediation - allows you to show ads from different sources.\n\nSupported services: \n\n* Admob\n* Unity Ads\n* Poki\n* Yandex\n* Yandex Mobile Ads\n* Vk Bridge\n* Applovin Max\n* GameDistribution\n* IronSource\n\nAds Wrapper also allows you to run multiple networks at the same time. For example Admob and Unity Ads.\n\nYou can find more information on the [networks](#networks)\n\n## Installation\n\nYou can use it in your own project by adding this project as a [Defold library dependency](http://www.defold.com/manuals/libraries/). Open your `game.project` file and in the dependencies field add **a link to the ZIP file of a [specific release](https://github.com/potatojam/defold-ads-wrapper/tags).**\n\n## Initialization\n\nFirst you need to make a require for `ads_wrapper.ads_wrapper` and `ads_wrapper.events`.\n\n```lua\nlocal ads_wrapper = require(\"ads_wrapper.ads_wrapper\")\nlocal events = require(\"ads_wrapper.events\")\n```\n\nNext, you need to register the networks. More details about networks can be found [here](#networks).\n\n```lua\n-- Getting our module with networks\nlocal test = require(\"ads_wrapper.ads_networks.test\")\n-- Register the first network\nlocal test_1_id = ads_wrapper.register_network(test.network1, {param = \"test_param 1\"})\n-- Register the second network\nlocal test_2_id = ads_wrapper.register_network(test.network2, {param = \"test_param 2\"})\n```\n\nNext, you need to configure the mediators you need. \nThere are two types: Video and Banner.\nVideo mediator refers to the functions associated with interstitials and rewarded videos.\nBanner mediator refers to the functions associated with banners.\nYou need to set up only the mediator that you need. For example, Poki does not support banners.\n\n```lua\n-- Setup video mediator\nads_wrapper.setup_video({{id = test_2_id, count = 2}, {id = test_1_id, count = 2}}, 4)\n-- Setup banner mediator\nads_wrapper.setup_banner({{id = test_1_id, count = 1}})\n```\n\nYou can read more about mediators [here](#mediators).\n\nNext, you need to initialize ads wrapper.\n\n```lua\nads_wrapper.init(true, true, function(response)\n    if response.result == events.SUCCESS then\n        pprint(\"Ads wrapper is initialized\", response)\n    else\n        pprint(\"Something bad happened\", response)\n    end\nend)\n```\n\nIn the first two parameters, you can specify the need to initialize the network.\nFirst - `initilize_video`, Second - `initilize_banner`. This may take time depending on the service. \nFurther, they can be initialized separately, if not done immediately.\nWhen an advertisement is called, they will be initialized `automatically` if it has not been done before.\n\nAlmost all functions have a `callback` parameter.\n`callback` - function which takes one `response` parameter.\n\n## Response\n\nThe `response` can be of two types: `success` and `error`.\n\nResponse is a table:\n\n* result \u003ckbd\u003ehash\u003c/kbd\u003e _required_ May be `events.SUCCESS` or `events.ERROR`\n* name \u003ckbd\u003estring\u003c/kbd\u003e _optional_ Network name\n* message \u003ckbd\u003estring\u003c/kbd\u003e _optional_ Additional information. For example, consists info about error or it may report that the network has already been initialized when `init_video_networks` is called again.\n* code \u003ckbd\u003ehash\u003c/kbd\u003e _optional_ [Response code](#response-codes). Information that convient to track by code.\n* responses \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Contains all responses if the function is called for multiple networks. This may be during initialization.\n* was_open \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Some networks report whether ads was open when calling `show_interstitial` or `show_rewarded`.\n\nAlso, the response may contain additional information from a specific network.\n\nModule `ads_wrapper.events` contains useful variables:\n\n* `events.SUCCESS` \u003ckbd\u003ehash(\"SUCCESS\")\u003c/kbd\u003e\n* `events.ERROR` \u003ckbd\u003ehash(\"ERROR\")\u003c/kbd\u003e\n\n## Response Codes\n\nThe response table may have the code. All of them are contained in the `ads_wrapper.events` module, like `events.C_SKIPPED`. There are types of codes:\n\n* `events.C_SKIPPED` \u003ckbd\u003ehash(\"C_SKIPPED\")\u003c/kbd\u003e - if the rewarded advertisement was skipped\n* `events.C_ERROR_UNKNOWN` \u003ckbd\u003ehash(\"C_ERROR_UNKNOWN\")\u003c/kbd\u003e - an unknown error type is occured\n* `events.C_ERROR_AD_BLOCK` \u003ckbd\u003ehash(\"C_ERROR_AD_BLOCK\")\u003c/kbd\u003e - an error is related to the adblock\n* `events.C_ERROR_NO_CONNECTION` \u003ckbd\u003ehash(\"C_ERROR_NO_CONNECTION\")\u003c/kbd\u003e - no internet connection\n\n## Mediators\n\nMediators are configured with two functions: `ads_wrapper.setup_video` and `ads_wrapper.setup_banner`.\nThe function sets the order which creates the queue.\n\nOptions:\n\n* order \u003ckbd\u003etable\u003c/kbd\u003e _required_ Ad display order. This is an array that contains objects like `{id = network_id, count = 2}`.\n  * id \u003ckbd\u003enumber\u003c/kbd\u003e _required_ Id that you get when registering a network using `ads_wrapper.register_network`.\n  * count \u003ckbd\u003enumber\u003c/kbd\u003e _optional_ how many times you need to show ads in a row in a queue. Default `1`\n* repeat_cut \u003ckbd\u003enumber\u003c/kbd\u003e _optional_ specified if after the first cycle in queue it is necessary to cut off a part of the order. Default: the total number of all networks. Below are examples.\n\nExamples:\n\n1. Single network\n\n    All other parameters are not needed for one network.\n\n    ```lua\n    ads_wrapper.setup_video({{id = test_id_1}})\n    ```\n    Queue: `test_1-\u003etest_1-\u003etest_1-\u003etest_1-\u003etest_1-\u003e`\n\n2. Multiple networks with `repeat_cut` parameter\n\n    ```lua\n    ads_wrapper.setup_video({{id = test_id_1, count = 2}, {id = test_id_2, count = 2}, {id = test_id_1, count = 1}}, 3)\n    ```\n\n    Queue:\n    - `1: test_1-\u003etest_1-\u003etest_2-\u003etest_2-\u003etest_1-\u003e`\n    - `2: test_2-\u003etest_2-\u003etest_1-\u003e`\n    - `3: test_2-\u003etest_2-\u003etest_1-\u003e`\n    - And so on\n\n    Part of the order is cut off after the first cycle.\n\n3. Multiple networks without `repeat_cut` parameter\n\n   `repeat_cut` automatically becomes `3`.\n\n    ```lua\n    ads_wrapper.setup_video({{id = test_id_1, count = 1}, {id = test_id_2, count = 2}})\n    ```\n    Queue:\n    - `1: test_1-\u003etest_2-\u003etest_2-\u003e`\n    - `2: test_1-\u003etest_2-\u003etest_2-\u003e`\n    - `3: test_1-\u003etest_2-\u003etest_2-\u003e`\n    - And so on\n\n## Lua API\n\nIn many functions there is a queue of calls. Before calling `show_intertitial` `ads_wrapper` will check if the ad has been loaded, and if not, it will load it first. If there is an error somewhere, the queue will break.\n\n### `ads_wrapper.register_network(network, params)`\n\nRegisters network. Returns id.\n\n**Parameters**\n\n- `network` \u003ckbd\u003etable\u003c/kbd\u003e _required_ network module\n- `params` \u003ckbd\u003etable\u003c/kbd\u003e _required_ network options. They are different for every network. They can be found in the [networks](#networks) section.\n\n**Return**\n\n- id \u003ckbd\u003enumber\u003c/kbd\u003e Network id. It is needed to set up the mediator.\n\n### `ads_wrapper.setup_video(order, repeat_count)`\n\nSetups interstitial and reward mediator. More info [here](#mediators).\n\n**Parameters**\n\n- order \u003ckbd\u003etable\u003c/kbd\u003e _required_ Ad display order. This is an array that contains objects like `{id = network_id, count = 2}`.\n- repeat_cut \u003ckbd\u003enumber\u003c/kbd\u003e _optional_ specified if after the first cycle in queue it is necessary to cut off a part of the order. Default: the total number of all networks.\n\n### `ads_wrapper.setup_banner(order, repeat_count, _banner_auto_hide)`\n\nSetups banner mediator. More info [here](#mediators).\n\n**Parameters**\n\n- order \u003ckbd\u003etable\u003c/kbd\u003e _required_ Ad display order. This is an array that contains objects like `{id = network_id, count = 2}`.\n- repeat_cut \u003ckbd\u003enumber\u003c/kbd\u003e _optional_ specified if after the first cycle in queue it is necessary to cut off a part of the order. Default: the total number of all networks.\n- _banner_auto_hide \u003ckbd\u003eboolean\u003c/kbd\u003e _optional_ The banner will be automatically hidden if `hide_banner` was called after `show_banner`, but the banner did not have time to load. Default: `false`\n\n### `ads_wrapper.init(initilize_video, initilize_banner, callback, params)`\n\nInitializes ads_wrapper. Callback consists `responses` field.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit`\n\n**Parameters**\n\n- initilize_video \u003ckbd\u003eboolean\u003c/kbd\u003e _optional_  check if need to initialize video networks\n- initilize_banner \u003ckbd\u003eboolean\u003c/kbd\u003e _optional_ check if need to initialize banner networks\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response).\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n### `ads_wrapper.init_video_networks(callback, params)`\n\nInitialize video networks.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit`\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n### `ads_wrapper.init_banner_networks(callback, params)`\n\nInitialize banner networks.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit`\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n### `ads_wrapper.load_rewarded(callback, params)`\n\nLoads rewarded ads for next network.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit-\u003eload_rewarded`\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- id \u003ckbd\u003einteger|nil\u003c/kbd\u003e id to cancel execution\n\n### `ads_wrapper.show_rewarded(callback, params)`\n\nShows rewarded ads for next network. Callback contain a special `code` field with [events.C_SKIPPED](#response-codes) if the user skipped the ad.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit-\u003eload_rewarded-\u003eshow_rewarded`\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response).\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- id \u003ckbd\u003einteger|nil\u003c/kbd\u003e id to cancel execution\n\n### `ads_wrapper.load_interstitial(callback, params)`\n\nLoads interstitial ads for next network.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit-\u003eload_interstitial`\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- id \u003ckbd\u003einteger|nil\u003c/kbd\u003e id to cancel execution\n\n### `ads_wrapper.show_interstitial(callback, params)`\n\nShows interstitial ads for next network.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit-\u003eload_interstitial-\u003eshow_interstitial`\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- id \u003ckbd\u003einteger|nil\u003c/kbd\u003e id to cancel execution\n\n### `ads_wrapper.load_banner(callback, params)`\n\nLoads banner for for next network.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit-\u003eload_banner`\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- id \u003ckbd\u003einteger|nil\u003c/kbd\u003e id to cancel execution\n\n### `ads_wrapper.show_banner(callback, params)`\n\nShows setup banner for next network. Hides the previous banner if it was displayed.\n\nQueue: `check_connection-\u003erequest_idfa-\u003einit-\u003eload_banner-\u003eshow_banner`\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- id \u003ckbd\u003einteger|nil\u003c/kbd\u003e id to cancel execution\n\n### `ads_wrapper.hide_banner(callback, params)`\n\nHides setup banner for current network.\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n### `ads_wrapper.unload_banner(callback, params)`\n\nUnloads banner for current networks.\n\n**Parameters**\n\n- callback \u003ckbd\u003efunction\u003c/kbd\u003e _optional_ callback with [response](#response)\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n### `ads_wrapper.is_banner_setup()`\n\nCheck if the banner mediator is set up\n\n**Return**\n\n- value \u003ckbd\u003eboolean\u003c/kbd\u003e\n\n### `ads_wrapper.is_video_setup()`\n\nCheck if the interstitial and rewarded video mediator is set up\n\n**Return**\n\n- value \u003ckbd\u003eboolean\u003c/kbd\u003e\n\n### `ads_wrapper.is_initialized()`\n\nCheck if ads wrapper is initiailzed\n\n**Return**\n\n- value \u003ckbd\u003eboolean\u003c/kbd\u003e\n\n### `ads_wrapper.is_internet_connected()`\n\nChecks for internet connection\n\n**Return**\n\n- value \u003ckbd\u003eboolean\u003c/kbd\u003e\n\n### `ads_wrapper.is_interstitial_loaded(check_current, params)`\n\nCheck if the interstitial video is loaded.\nDefault checks the `next` network in mediator.\n\n**Parameters**\n\n- check_current \u003ckbd\u003eboolean\u003c/kbd\u003e _optional_ if need check current network. Default `false`\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- value \u003ckbd\u003eboolean\u003c/kbd\u003e\n\n### `ads_wrapper.is_rewarded_loaded(check_current, params)`\n\nCheck if the rewarded video is loaded.\nDefault checks the `next` network in mediator.\n\n**Parameters**\n\n- check_current \u003ckbd\u003eboolean\u003c/kbd\u003e _optional_ if need check current network. Default `false`\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- value \u003ckbd\u003eboolean\u003c/kbd\u003e\n\n### `ads_wrapper.is_banner_loaded(check_current, params)`\n\nCheck if the banner is loaded.\nDefault checks the `next` network in mediator.\n\n**Parameters**\n\n- check_current \u003ckbd\u003eboolean\u003c/kbd\u003e _optional_ if need check current network. Default `false`\n- params \u003ckbd\u003etable\u003c/kbd\u003e _optional_ Custom parameters for the network\n\n**Return**\n\n- value \u003ckbd\u003eboolean\u003c/kbd\u003e\n\n### `ads_wrapper.get_current_network(check_banner)`\n\nReturns the current network pointed to by mediator\nDefault returns for the video mediator\n\n**Parameters**\n\n- check_banner \u003ckbd\u003eboolean\u003c/kbd\u003e _optional_ if need to return mediator for banners. Default `false`\n\n**Return**\n\n- network \u003ckbd\u003etable|nil\u003c/kbd\u003e\n\n### `ads_wrapper.get_next_network(check_banner)`\n\nReturns the next network pointed to by mediator\nDefault returns for the video mediator\n\n**Parameters**\n\n- check_banner \u003ckbd\u003eboolean\u003c/kbd\u003e _optional_ if need to return mediator for banners. Default `false`\n\n**Return**\n\n- network \u003ckbd\u003etable|nil\u003c/kbd\u003e\n\n### `ads_wrapper.clear_networks()`\n\nRemove all registered networks\n\n### `ads_wrapper.cancel(id)`\n\nСancel execution of the next step in the queue.\nFor example, if you cancel **show_interstitial** while the ad is loading, then it will not be shown.\n\n**Parameters**\n\n- id \u003ckbd\u003enumber\u003c/kbd\u003e _required_ queue id received from the function\n\n## Constants\n\nConstants are used to set network parameters\n\n* T_REWARDED \u003ckbd\u003ehash(\"T_REWARDED\")\u003c/kbd\u003e\n* T_INTERSTITIAL \u003ckbd\u003ehash(\"T_INTERSTITIAL\")\u003c/kbd\u003e\n* T_BANNER \u003ckbd\u003ehash(\"T_BANNER\")\u003c/kbd\u003e\n\n## Platform\n\nThis module can be used in network settings.\n\n```lua\nlocal platform = require(\"ads_wrapper.platform\")\n```\n\nConstants:\n* PL_ANDROID \u003ckbd\u003ehash(\"PL_ANDROID\")\u003c/kbd\u003e\n* PL_IOS \u003ckbd\u003ehash(\"PL_IOS\")\u003c/kbd\u003e\n* PL_HTML5 \u003ckbd\u003ehash(\"PL_HTML5\")\u003c/kbd\u003e\n* PL_OTHER \u003ckbd\u003ehash(\"PL_OTHER\")\u003c/kbd\u003e\n\n### `platform.is_same(pl_value)`\n\n**Parameters**\n\n- pl_value \u003ckbd\u003ehash\u003c/kbd\u003e _required_ One of the constants\n\nСheck if the platform is correct\n\n**Return**\n\n- value \u003ckbd\u003eboolean\u003c/kbd\u003e\n\n### `platform.get()`\n\nReturns current hash platform\n\n**Return**\n\n- value \u003ckbd\u003ehash\u003c/kbd\u003e\n\n## Networks\n\nYou can use existing networks or create your own.\nMore information can be found at the links:\n\n* [Test](docs/networks.md#test-networks)\n* [Admob](docs/networks.md#admob)\n* [Unity Ads](docs/networks.md#unity-ads)\n* [Poki](docs/networks.md#poki)\n* [Yandex](docs/networks.md#yandex)\n* [Yandex Mobile Ads](docs/networks.md#yandex-mobile-ads)\n* [Vk Bridge](docs/networks.md#vk-bridge)\n* [Applovin Max](docs/networks.md#applovin-max)\n* [Admob and Unity Ads](docs/networks.md#admob-and-unity-ads)\n* [GameDistribution](docs/networks.md#gamedistribution)\n* [IronSource](docs/networks.md#ironsource)\n\n## Network Creation\n\nYou can create your own [network](docs/network-creation.md).\nIt is best to look at already made networks.\n\n## Debug mode\n\nYou can include output to the console of all operations that are done when calling functions with the queue.\n\n```lua\nlocal events = require(\"ads_wrapper.events\")\nlocal queue = require(\"ads_wrapper.queue\")\n\nqueue.set_verbose_mode(events.V_ALL)\n```\n\nConstants:\n\n* events.V_NONE \u003ckbd\u003ehash(\"V_NONE\")\u003c/kbd\u003e Output nothing. Default value.\n* events.V_ERROR \u003ckbd\u003ehash(\"V_ERROR\")\u003c/kbd\u003e Show all errors\n* events.V_SUCCESS \u003ckbd\u003ehash(\"V_SUCCESS\")\u003c/kbd\u003e Show all success responses\n* events.V_ALL \u003ckbd\u003ehash(\"V_ALL\")\u003c/kbd\u003e Show all messages\n\n## Credits\n\nMade by [PotatoJam](https://github.com/potatojam).\n\nFor example used:\n\n[Dirty Larry](https://github.com/andsve/dirtylarry)\n\n[Druid](https://github.com/Insality/druid)\n\n### License\n\nMIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpotatojam%2Fdefold-ads-wrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpotatojam%2Fdefold-ads-wrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpotatojam%2Fdefold-ads-wrapper/lists"}