diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..c0be1d9
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sample-firebase/build.gradle.kts b/sample-firebase/build.gradle.kts
index c611b67..e7b741d 100644
--- a/sample-firebase/build.gradle.kts
+++ b/sample-firebase/build.gradle.kts
@@ -19,10 +19,13 @@ repositories {
dependencies {
testImplementation(kotlin("test"))
implementation("org.jetbrains.kotlinx:kotlinx-html:0.7.2")
+ implementation(npm("firebase", "9.1.3"))
+ implementation(npm("is-sorted", "1.0.5"))
+
}
kotlin {
- js(IR) {
+ js(LEGACY) {
binaries.executable()
browser {
commonWebpackConfig {
diff --git a/sample-firebase/src/main/kotlin/Client.kt b/sample-firebase/src/main/kotlin/Client.kt
index 4837944..3e59ae7 100644
--- a/sample-firebase/src/main/kotlin/Client.kt
+++ b/sample-firebase/src/main/kotlin/Client.kt
@@ -3,9 +3,46 @@ import kotlinx.html.dom.append
import org.w3c.dom.Node
import kotlinx.browser.document
import kotlinx.browser.window
+import kotlinx.html.p
+import kotlin.js.Json
+import kotlin.js.json
+
+
+//// Import the functions you need from the SDKs you need
+//import { initializeApp } from "firebase/app";
+//import { getAnalytics } from "firebase/analytics";
+//const firebaseConfig = {
+//};
+//
+//const app = initializeApp(firebaseConfig);
+//const analytics = getAnalytics(app);
+
+@JsModule("is-sorted")
+@JsNonModule
+external fun sorted(a: Array): Boolean
fun main() {
- window.onload = { document.body?.sayHello() }
+// startFirebase()
+ window.onload = {
+ console.log(sorted(arrayOf(1, 2, 3)))
+ startFirebase();
+ document.body?.sayHello() }
+}
+
+fun startFirebase(){
+ val firebaseConfig: Json = json(
+ "apiKey" to "AIzaSyD8uQHyfWh2HBdppW-SiVG-clhRiXTRJcM",
+ "authDomain" to "kanawish-blog-samples.firebaseapp.com",
+ "databaseURL" to "https://kanawish-blog-samples-default-rtdb.firebaseio.com",
+ "projectId" to "kanawish-blog-samples",
+ "storageBucket" to "kanawish-blog-samples.appspot.com",
+ "messagingSenderId" to "872035858041",
+ "appId" to "1:872035858041:web:38673c69d5f931261f06a8",
+ "measurementId" to "G-625CTE2C2L"
+ )
+
+ val fire = initializeApp(firebaseConfig)
+ console.log(fire)
}
fun Node.sayHello() {
@@ -13,5 +50,8 @@ fun Node.sayHello() {
div {
+"Hello from JS"
}
+ p{
+ sorted(arrayOf(1, 2, 3))
+ }
}
}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.analytics.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.analytics.module_firebase_compat.kt
new file mode 100644
index 0000000..10b4cbf
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.analytics.module_firebase_compat.kt
@@ -0,0 +1,616 @@
+@file:JsQualifier("analytics")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface `T$17` {
+ var coupon: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var items: Array- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ var payment_type: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$18` {
+ var coupon: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ var shipping_tier: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$19` {
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$20` {
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var coupon: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$21` {
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var coupon: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ var checkout_step: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var checkout_option: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$22` {
+ var description: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var fatal: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$23` {
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$24` {
+ var method: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$25` {
+ var page_title: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var page_location: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var page_path: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$26` {
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var transaction_id: String
+ var tax: dynamic /* String? | Number? */
+ get() = definedExternally
+ set(value) = definedExternally
+ var shipping: dynamic /* String? | Number? */
+ get() = definedExternally
+ set(value) = definedExternally
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ var coupon: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var affiliation: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$27` {
+ var firebase_screen: String
+ var firebase_screen_class: String
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$28` {
+ var search_term: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$29` {
+ var content_type: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$30` {
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_list_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_list_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$31` {
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ var promotion_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var promotion_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$32` {
+ var checkout_step: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var checkout_option: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$33` {
+ var method: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var content_type: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$34` {
+ var name: String
+ var value: Number
+ var event_category: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var event_label: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface `T$35` {
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external interface Analytics {
+ var app: App
+ fun logEvent(eventName: String /* "add_payment_info" */, eventParams: `T$17` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "add_payment_info" | "add_shipping_info" | "add_to_cart" | "add_to_wishlist" | "remove_from_cart" | "begin_checkout" | "checkout_progress" | "exception" | "generate_lead" | "login" | "page_view" | "purchase" | "refund" | "screen_view" | "search" | "view_search_results" | "select_content" | "select_item" | "select_promotion" | "view_promotion" | "set_checkout_option" | "share" | "sign_up" | "timing_complete" | "view_cart" | "view_item" | "view_item_list" */)
+ fun logEvent(eventName: String /* "add_payment_info" */, eventParams: `T$17` = definedExternally)
+ fun logEvent(eventName: String /* "add_shipping_info" */, eventParams: `T$18` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "add_shipping_info" */, eventParams: `T$18` = definedExternally)
+ fun logEvent(eventName: String /* "add_to_cart" | "add_to_wishlist" | "remove_from_cart" */, eventParams: `T$19` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "add_to_cart" | "add_to_wishlist" | "remove_from_cart" */, eventParams: `T$19` = definedExternally)
+ fun logEvent(eventName: String /* "begin_checkout" */, eventParams: `T$20` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "begin_checkout" */, eventParams: `T$20` = definedExternally)
+ fun logEvent(eventName: String /* "checkout_progress" */, eventParams: `T$21` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "checkout_progress" */, eventParams: `T$21` = definedExternally)
+ fun logEvent(eventName: String /* "exception" */, eventParams: `T$22` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "exception" */, eventParams: `T$22` = definedExternally)
+ fun logEvent(eventName: String /* "generate_lead" */, eventParams: `T$23` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "generate_lead" */, eventParams: `T$23` = definedExternally)
+ fun logEvent(eventName: String /* "login" | "sign_up" */, eventParams: `T$24` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "login" | "sign_up" */, eventParams: `T$24` = definedExternally)
+ fun logEvent(eventName: String /* "page_view" */, eventParams: `T$25` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "page_view" */, eventParams: `T$25` = definedExternally)
+ fun logEvent(eventName: String /* "purchase" | "refund" */, eventParams: `T$26` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "purchase" | "refund" */, eventParams: `T$26` = definedExternally)
+ fun logEvent(eventName: String /* "screen_view" */, eventParams: `T$27` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "screen_view" */, eventParams: `T$27` = definedExternally)
+ fun logEvent(eventName: String /* "search" | "view_search_results" */, eventParams: `T$28` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "search" | "view_search_results" */, eventParams: `T$28` = definedExternally)
+ fun logEvent(eventName: String /* "select_content" */, eventParams: `T$29` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "select_content" */, eventParams: `T$29` = definedExternally)
+ fun logEvent(eventName: String /* "select_item" | "view_item_list" */, eventParams: `T$30` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "select_item" | "view_item_list" */, eventParams: `T$30` = definedExternally)
+ fun logEvent(eventName: String /* "select_promotion" | "view_promotion" */, eventParams: `T$31` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "select_promotion" | "view_promotion" */, eventParams: `T$31` = definedExternally)
+ fun logEvent(eventName: String /* "set_checkout_option" */, eventParams: `T$32` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "set_checkout_option" */, eventParams: `T$32` = definedExternally)
+ fun logEvent(eventName: String /* "share" */, eventParams: `T$33` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "share" */, eventParams: `T$33` = definedExternally)
+ fun logEvent(eventName: String /* "timing_complete" */, eventParams: `T$34` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "timing_complete" */, eventParams: `T$34` = definedExternally)
+ fun logEvent(eventName: String /* "view_cart" | "view_item" */, eventParams: `T$35` = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: String /* "view_cart" | "view_item" */, eventParams: `T$35` = definedExternally)
+ fun logEvent(eventName: CustomEventName, eventParams: Json = definedExternally, options: AnalyticsCallOptions = definedExternally)
+ fun logEvent(eventName: CustomEventName)
+ fun logEvent(eventName: CustomEventName, eventParams: Json = definedExternally)
+ fun setCurrentScreen(screenName: String, options: AnalyticsCallOptions = definedExternally)
+ fun setUserId(id: String, options: AnalyticsCallOptions = definedExternally)
+ fun setUserProperties(properties: CustomParams, options: AnalyticsCallOptions = definedExternally)
+ fun setAnalyticsCollectionEnabled(enabled: Boolean)
+}
+
+external interface AnalyticsCallOptions {
+ var global: Boolean
+}
+
+external interface SettingsOptions {
+ var gtagName: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var dataLayerName: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external fun settings(settings: SettingsOptions)
+
+external interface ControlParams {
+ var groups: dynamic /* String? | Array? */
+ get() = definedExternally
+ set(value) = definedExternally
+ var send_to: dynamic /* String? | Array? */
+ get() = definedExternally
+ set(value) = definedExternally
+ var event_callback: (() -> Unit)?
+ get() = definedExternally
+ set(value) = definedExternally
+ var event_timeout: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface EventParams {
+ var checkout_option: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var checkout_step: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var content_type: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var coupon: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var description: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var fatal: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var items: Array
- ?
+ get() = definedExternally
+ set(value) = definedExternally
+ var method: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var number: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var promotions: Array?
+ get() = definedExternally
+ set(value) = definedExternally
+ var screen_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var firebase_screen: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var firebase_screen_class: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var search_term: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var shipping: dynamic /* String? | Number? */
+ get() = definedExternally
+ set(value) = definedExternally
+ var tax: dynamic /* String? | Number? */
+ get() = definedExternally
+ set(value) = definedExternally
+ var transaction_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var event_label: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var event_category: String
+ var shipping_tier: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_list_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_list_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var promotion_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var promotion_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var payment_type: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var affiliation: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface CustomParams {
+ @nativeGetter
+ operator fun get(key: String): Any?
+ @nativeSetter
+ operator fun set(key: String, value: Any)
+}
+
+external enum class EventName {
+ ADD_PAYMENT_INFO /* = 'add_payment_info' */,
+ ADD_SHIPPING_INFO /* = 'add_shipping_info' */,
+ ADD_TO_CART /* = 'add_to_cart' */,
+ ADD_TO_WISHLIST /* = 'add_to_wishlist' */,
+ BEGIN_CHECKOUT /* = 'begin_checkout' */,
+ CHECKOUT_PROGRESS /* = 'checkout_progress' */,
+ EXCEPTION /* = 'exception' */,
+ GENERATE_LEAD /* = 'generate_lead' */,
+ LOGIN /* = 'login' */,
+ PAGE_VIEW /* = 'page_view' */,
+ PURCHASE /* = 'purchase' */,
+ REFUND /* = 'refund' */,
+ REMOVE_FROM_CART /* = 'remove_from_cart' */,
+ SCREEN_VIEW /* = 'screen_view' */,
+ SEARCH /* = 'search' */,
+ SELECT_CONTENT /* = 'select_content' */,
+ SELECT_ITEM /* = 'select_item' */,
+ SELECT_PROMOTION /* = 'select_promotion' */,
+ SET_CHECKOUT_OPTION /* = 'set_checkout_option' */,
+ SHARE /* = 'share' */,
+ SIGN_UP /* = 'sign_up' */,
+ TIMING_COMPLETE /* = 'timing_complete' */,
+ VIEW_CART /* = 'view_cart' */,
+ VIEW_ITEM /* = 'view_item' */,
+ VIEW_ITEM_LIST /* = 'view_item_list' */,
+ VIEW_PROMOTION /* = 'view_promotion' */,
+ VIEW_SEARCH_RESULTS /* = 'view_search_results' */
+}
+
+external interface Item {
+ var item_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_brand: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_category: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_category2: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_category3: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_category4: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_category5: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_variant: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var price: dynamic /* String? | Number? */
+ get() = definedExternally
+ set(value) = definedExternally
+ var quantity: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var index: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var coupon: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_list_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var item_list_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var discount: dynamic /* String? | Number? */
+ get() = definedExternally
+ set(value) = definedExternally
+ var affiliation: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var creative_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var creative_slot: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var promotion_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var promotion_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var location_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var brand: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var category: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface Promotion {
+ var creative_name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var creative_slot: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external fun isSupported(): Promise
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.app.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.app.module_firebase_compat.kt
new file mode 100644
index 0000000..79a0927
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.app.module_firebase_compat.kt
@@ -0,0 +1,19 @@
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface App {
+ fun auth(): Auth
+ fun database(url: String = definedExternally): Database
+ fun delete(): Promise
+ fun installations(): Installations
+ fun messaging(): Messaging
+ var name: String
+ var automaticDataCollectionEnabled: Boolean
+ var options: Any
+ fun functions(regionOrCustomDomain: String = definedExternally): Functions
+ fun performance(): Performance
+ fun remoteConfig(): RemoteConfig
+ fun analytics(): Analytics
+ fun appCheck(): AppCheck
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.appCheck.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.appCheck.module_firebase_compat.kt
new file mode 100644
index 0000000..4d1c1bf
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.appCheck.module_firebase_compat.kt
@@ -0,0 +1,58 @@
+@file:JsQualifier("appCheck")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface AppCheckTokenResult {
+ var token: String
+}
+
+external open class ReCaptchaV3Provider(siteKey: String)
+
+external open class CustomProvider(options: CustomProviderOptions)
+
+external interface CustomProviderOptions {
+ var getToken: () -> Promise
+}
+
+external interface `T$6` {
+ var getToken: () -> AppCheckToken
+}
+
+external interface `T$7` {
+ var next: (tokenResult: AppCheckTokenResult) -> Unit
+ var error: ((error: Error) -> Unit)?
+ get() = definedExternally
+ set(value) = definedExternally
+ var complete: (() -> Unit)?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface AppCheck {
+ fun activate(provider: ReCaptchaV3Provider, isTokenAutoRefreshEnabled: Boolean = definedExternally)
+ fun activate(provider: ReCaptchaV3Provider)
+ fun activate(provider: CustomProvider, isTokenAutoRefreshEnabled: Boolean = definedExternally)
+ fun activate(provider: CustomProvider)
+ fun activate(provider: AppCheckProvider, isTokenAutoRefreshEnabled: Boolean = definedExternally)
+ fun activate(provider: AppCheckProvider)
+ fun activate(provider: `T$6`, isTokenAutoRefreshEnabled: Boolean = definedExternally)
+ fun activate(provider: `T$6`)
+ fun activate(provider: String, isTokenAutoRefreshEnabled: Boolean = definedExternally)
+ fun activate(provider: String)
+ fun setTokenAutoRefreshEnabled(isTokenAutoRefreshEnabled: Boolean)
+ fun getToken(forceRefresh: Boolean = definedExternally): Promise
+ fun onTokenChanged(observer: `T$7`): Unsubscribe
+ fun onTokenChanged(onNext: (tokenResult: AppCheckTokenResult) -> Unit, onError: (error: Error) -> Unit = definedExternally, onCompletion: () -> Unit = definedExternally): Unsubscribe
+ fun onTokenChanged(onNext: (tokenResult: AppCheckTokenResult) -> Unit): Unsubscribe
+ fun onTokenChanged(onNext: (tokenResult: AppCheckTokenResult) -> Unit, onError: (error: Error) -> Unit = definedExternally): Unsubscribe
+}
+
+external interface AppCheckProvider {
+ fun getToken(): Promise
+}
+
+external interface AppCheckToken {
+ var token: String
+ var expireTimeMillis: Number
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.auth.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.auth.module_firebase_compat.kt
new file mode 100644
index 0000000..8069401
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.auth.module_firebase_compat.kt
@@ -0,0 +1,424 @@
+@file:JsQualifier("auth")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external open class ActionCodeURL {
+ open var apiKey: String
+ open var code: String
+ open var continueUrl: String?
+ open var languageCode: String?
+ open var operation: Operation
+ open var tenantId: String?
+
+ companion object {
+ fun parseLink(link: String): ActionCodeURL?
+ }
+}
+
+external interface `T$13` {
+ var email: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var fromEmail: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var multiFactorInfo: MultiFactorInfo?
+ get() = definedExternally
+ set(value) = definedExternally
+ var previousEmail: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface ActionCodeInfo {
+ var data: `T$13`
+ var operation: String
+}
+
+external interface `T$14` {
+ var installApp: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var minimumVersion: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var packageName: String
+}
+
+external interface `T$15` {
+ var bundleId: String
+}
+
+external interface ActionCodeSettings {
+ var android: `T$14`?
+ get() = definedExternally
+ set(value) = definedExternally
+ var handleCodeInApp: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var iOS: `T$15`?
+ get() = definedExternally
+ set(value) = definedExternally
+ var url: String
+ var dynamicLinkDomain: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface AdditionalUserInfo {
+ var isNewUser: Boolean
+ var profile: Any?
+ var providerId: String
+ var username: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface ApplicationVerifier {
+ var type: String
+ fun verify(): Promise
+}
+
+external interface AuthSettings {
+ var appVerificationDisabledForTesting: Boolean
+}
+
+external interface Config {
+ var apiKey: String
+ var apiHost: String
+ var apiScheme: String
+ var tokenApiHost: String
+ var sdkClientVersion: String
+ var authDomain: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface `T$16` {
+ var disableWarnings: Boolean
+}
+
+external interface EmulatorConfig {
+ var protocol: String
+ var host: String
+ var port: Number?
+ var options: `T$16`
+}
+
+external interface Auth {
+ var name: String
+ var config: Config
+ var emulatorConfig: EmulatorConfig?
+ var app: App
+ fun applyActionCode(code: String): Promise
+ fun checkActionCode(code: String): Promise
+ fun confirmPasswordReset(code: String, newPassword: String): Promise
+ fun createUserWithEmailAndPassword(email: String, password: String): Promise
+ var currentUser: User?
+ fun fetchSignInMethodsForEmail(email: String): Promise>
+ fun isSignInWithEmailLink(emailLink: String): Boolean
+ fun getRedirectResult(): Promise
+ var languageCode: String?
+ var settings: AuthSettings
+ fun onAuthStateChanged(nextOrObserver: Observer__1, error: (a: Error) -> Any = definedExternally, completed: Unsubscribe = definedExternally): Unsubscribe
+ fun onAuthStateChanged(nextOrObserver: Observer__1): Unsubscribe
+ fun onAuthStateChanged(nextOrObserver: Observer__1, error: (a: Error) -> Any = definedExternally): Unsubscribe
+ fun onAuthStateChanged(nextOrObserver: (a: User?) -> Any, error: (a: Error) -> Any = definedExternally, completed: Unsubscribe = definedExternally): Unsubscribe
+ fun onAuthStateChanged(nextOrObserver: (a: User?) -> Any): Unsubscribe
+ fun onAuthStateChanged(nextOrObserver: (a: User?) -> Any, error: (a: Error) -> Any = definedExternally): Unsubscribe
+ fun onIdTokenChanged(nextOrObserver: Observer__1, error: (a: Error) -> Any = definedExternally, completed: Unsubscribe = definedExternally): Unsubscribe
+ fun onIdTokenChanged(nextOrObserver: Observer__1): Unsubscribe
+ fun onIdTokenChanged(nextOrObserver: Observer__1, error: (a: Error) -> Any = definedExternally): Unsubscribe
+ fun onIdTokenChanged(nextOrObserver: (a: User?) -> Any, error: (a: Error) -> Any = definedExternally, completed: Unsubscribe = definedExternally): Unsubscribe
+ fun onIdTokenChanged(nextOrObserver: (a: User?) -> Any): Unsubscribe
+ fun onIdTokenChanged(nextOrObserver: (a: User?) -> Any, error: (a: Error) -> Any = definedExternally): Unsubscribe
+ fun sendSignInLinkToEmail(email: String, actionCodeSettings: ActionCodeSettings): Promise
+ fun sendPasswordResetEmail(email: String, actionCodeSettings: ActionCodeSettings? = definedExternally): Promise
+ fun setPersistence(persistence: Persistence): Promise
+ fun signInAndRetrieveDataWithCredential(credential: AuthCredential): Promise
+ fun signInAnonymously(): Promise
+ fun signInWithCredential(credential: AuthCredential): Promise
+ fun signInWithCustomToken(token: String): Promise
+ fun signInWithEmailAndPassword(email: String, password: String): Promise
+ fun signInWithPhoneNumber(phoneNumber: String, applicationVerifier: ApplicationVerifier): Promise
+ fun signInWithEmailLink(email: String, emailLink: String = definedExternally): Promise
+ fun signInWithPopup(provider: AuthProvider): Promise
+ fun signInWithRedirect(provider: AuthProvider): Promise
+ fun signOut(): Promise
+ var tenantId: String?
+ fun updateCurrentUser(user: User?): Promise
+ fun useDeviceLanguage()
+ fun useEmulator(url: String)
+ fun verifyPasswordResetCode(code: String): Promise
+}
+
+external open class AuthCredential {
+ open var providerId: String
+ open var signInMethod: String
+ open fun toJSON(): Any
+
+ companion object {
+ fun fromJSON(json: Any): AuthCredential?
+ fun fromJSON(json: String): AuthCredential?
+ }
+}
+
+external open class OAuthCredential : AuthCredential {
+ open var idToken: String
+ open var accessToken: String
+ open var secret: String
+}
+
+external interface AuthProvider {
+ var providerId: String
+}
+
+external interface ConfirmationResult {
+ fun confirm(verificationCode: String): Promise
+ var verificationId: String
+}
+
+external open class EmailAuthProvider : EmailAuthProvider_Instance {
+ companion object {
+ var PROVIDER_ID: String
+ var EMAIL_PASSWORD_SIGN_IN_METHOD: String
+ var EMAIL_LINK_SIGN_IN_METHOD: String
+ fun credential(email: String, password: String): AuthCredential
+ fun credentialWithLink(email: String, emailLink: String): AuthCredential
+ }
+}
+
+external open class EmailAuthProvider_Instance : AuthProvider {
+ override var providerId: String
+}
+
+external interface Error {
+ var name: String
+ var code: String
+ var message: String
+}
+
+external interface AuthError : Error {
+ var credential: AuthCredential?
+ get() = definedExternally
+ set(value) = definedExternally
+ var email: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var phoneNumber: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var tenantId: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface MultiFactorError : AuthError {
+ var resolver: MultiFactorResolver
+}
+
+external open class FacebookAuthProvider : FacebookAuthProvider_Instance {
+ companion object {
+ var PROVIDER_ID: String
+ var FACEBOOK_SIGN_IN_METHOD: String
+ fun credential(token: String): OAuthCredential
+ }
+}
+
+external open class FacebookAuthProvider_Instance : AuthProvider {
+ open fun addScope(scope: String): AuthProvider
+ override var providerId: String
+ open fun setCustomParameters(customOAuthParameters: Any): AuthProvider
+}
+
+external open class GithubAuthProvider : GithubAuthProvider_Instance {
+ companion object {
+ var PROVIDER_ID: String
+ var GITHUB_SIGN_IN_METHOD: String
+ fun credential(token: String): OAuthCredential
+ }
+}
+
+external open class GithubAuthProvider_Instance : AuthProvider {
+ open fun addScope(scope: String): AuthProvider
+ override var providerId: String
+ open fun setCustomParameters(customOAuthParameters: Any): AuthProvider
+}
+
+external open class GoogleAuthProvider : GoogleAuthProvider_Instance {
+ companion object {
+ var PROVIDER_ID: String
+ var GOOGLE_SIGN_IN_METHOD: String
+ fun credential(idToken: String? = definedExternally, accessToken: String? = definedExternally): OAuthCredential
+ }
+}
+
+external open class GoogleAuthProvider_Instance : AuthProvider {
+ open fun addScope(scope: String): AuthProvider
+ override var providerId: String
+ open fun setCustomParameters(customOAuthParameters: Any): AuthProvider
+}
+
+external open class OAuthProvider(providerId: String) : AuthProvider {
+ override var providerId: String
+ open fun addScope(scope: String): AuthProvider
+ open fun credential(optionsOrIdToken: OAuthCredentialOptions?, accessToken: String = definedExternally): OAuthCredential
+ open fun credential(optionsOrIdToken: OAuthCredentialOptions?): OAuthCredential
+ open fun credential(optionsOrIdToken: String?, accessToken: String = definedExternally): OAuthCredential
+ open fun credential(optionsOrIdToken: String?): OAuthCredential
+ open fun setCustomParameters(customOAuthParameters: Any): AuthProvider
+}
+
+external open class SAMLAuthProvider(providerId: String) : AuthProvider {
+ override var providerId: String
+}
+
+external interface IdTokenResult {
+ var token: String
+ var expirationTime: String
+ var authTime: String
+ var issuedAtTime: String
+ var signInProvider: String?
+ var signInSecondFactor: String?
+ var claims: Json
+}
+
+external interface OAuthCredentialOptions {
+ var idToken: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var accessToken: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var rawNonce: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external open class MultiFactorAssertion {
+ open var factorId: String
+}
+
+external open class PhoneMultiFactorAssertion : MultiFactorAssertion
+
+external open class PhoneMultiFactorGenerator {
+ companion object {
+ var FACTOR_ID: String
+ fun assertion(phoneAuthCredential: PhoneAuthCredential): PhoneMultiFactorAssertion
+ }
+}
+
+external interface MultiFactorInfo {
+ var uid: String
+ var displayName: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var enrollmentTime: String
+ var factorId: String
+}
+
+external interface PhoneMultiFactorInfo : MultiFactorInfo {
+ var phoneNumber: String
+}
+
+external interface PhoneSingleFactorInfoOptions {
+ var phoneNumber: String
+}
+
+external interface PhoneMultiFactorEnrollInfoOptions {
+ var phoneNumber: String
+ var session: MultiFactorSession
+}
+
+external interface PhoneMultiFactorSignInInfoOptions {
+ var multiFactorHint: MultiFactorInfo?
+ get() = definedExternally
+ set(value) = definedExternally
+ var multiFactorUid: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var session: MultiFactorSession
+}
+
+external open class MultiFactorResolver {
+ open var auth: Auth
+ open var session: MultiFactorSession
+ open var hints: Array
+ open fun resolveSignIn(assertion: MultiFactorAssertion): Promise
+}
+
+external open class MultiFactorSession
+
+external open class PhoneAuthCredential : AuthCredential
+
+external open class PhoneAuthProvider(auth: Auth? = definedExternally) : PhoneAuthProvider_Instance {
+ companion object {
+ var PROVIDER_ID: String
+ var PHONE_SIGN_IN_METHOD: String
+ fun credential(verificationId: String, verificationCode: String): AuthCredential
+ }
+}
+
+external open class PhoneAuthProvider_Instance(auth: Auth? = definedExternally) : AuthProvider {
+ override var providerId: String
+ open fun verifyPhoneNumber(phoneInfoOptions: PhoneSingleFactorInfoOptions, applicationVerifier: ApplicationVerifier): Promise
+ open fun verifyPhoneNumber(phoneInfoOptions: PhoneMultiFactorEnrollInfoOptions, applicationVerifier: ApplicationVerifier): Promise
+ open fun verifyPhoneNumber(phoneInfoOptions: PhoneMultiFactorSignInInfoOptions, applicationVerifier: ApplicationVerifier): Promise
+ open fun verifyPhoneNumber(phoneInfoOptions: String, applicationVerifier: ApplicationVerifier): Promise
+}
+
+external open class RecaptchaVerifier : RecaptchaVerifier_Instance {
+ constructor(container: Any, parameters: Any? = definedExternally, app: App? = definedExternally)
+ constructor(container: Any)
+ constructor(container: Any, parameters: Any? = definedExternally)
+ constructor(container: String, parameters: Any? = definedExternally, app: App? = definedExternally)
+ constructor(container: String)
+ constructor(container: String, parameters: Any? = definedExternally)
+}
+
+external open class RecaptchaVerifier_Instance : ApplicationVerifier {
+ constructor(container: Any, parameters: Any? = definedExternally, app: App? = definedExternally)
+ constructor(container: Any)
+ constructor(container: Any, parameters: Any? = definedExternally)
+ constructor(container: String, parameters: Any? = definedExternally, app: App? = definedExternally)
+ constructor(container: String)
+ constructor(container: String, parameters: Any? = definedExternally)
+ open fun clear()
+ open fun render(): Promise
+ override var type: String
+ override fun verify(): Promise
+}
+
+external open class TwitterAuthProvider : TwitterAuthProvider_Instance {
+ companion object {
+ var PROVIDER_ID: String
+ var TWITTER_SIGN_IN_METHOD: String
+ fun credential(token: String, secret: String): OAuthCredential
+ }
+}
+
+external open class TwitterAuthProvider_Instance : AuthProvider {
+ override var providerId: String
+ open fun setCustomParameters(customOAuthParameters: Any): AuthProvider
+}
+
+external interface UserCredential {
+ var additionalUserInfo: AdditionalUserInfo?
+ get() = definedExternally
+ set(value) = definedExternally
+ var credential: AuthCredential?
+ var operationType: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var user: User?
+}
+
+external interface UserMetadata {
+ var creationTime: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var lastSignInTime: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.database.ServerValue.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.database.ServerValue.module_firebase_compat.kt
new file mode 100644
index 0000000..4d16a79
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.database.ServerValue.module_firebase_compat.kt
@@ -0,0 +1,20 @@
+@file:JsQualifier("database.ServerValue")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+import org.khronos.webgl.*
+import org.w3c.dom.*
+import org.w3c.dom.events.*
+import org.w3c.dom.parsing.*
+import org.w3c.dom.svg.*
+import org.w3c.dom.url.*
+import org.w3c.fetch.*
+import org.w3c.files.*
+import org.w3c.notifications.*
+import org.w3c.performance.*
+import org.w3c.workers.*
+import org.w3c.xhr.*
+
+external var TIMESTAMP: Any
+
+external fun increment(delta: Number): Any
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.database.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.database.module_firebase_compat.kt
new file mode 100644
index 0000000..18eb531
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.database.module_firebase_compat.kt
@@ -0,0 +1,132 @@
+@file:JsQualifier("database")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface DataSnapshot {
+ fun child(path: String): DataSnapshot
+ fun exists(): Boolean
+ fun exportVal(): Any
+ fun forEach(action: (a: DataSnapshot) -> Any): Boolean
+ fun getPriority(): dynamic /* String? | Number? */
+ fun hasChild(path: String): Boolean
+ fun hasChildren(): Boolean
+ var key: String?
+ fun numChildren(): Number
+ fun `val`(): Any
+ var ref: Reference
+ fun toJSON(): Any?
+}
+
+external interface `T$36` {
+ var mockUserToken: dynamic /* typealias EmulatorMockTokenOptions = dynamic | String? */
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface Database {
+ var app: App
+ fun useEmulator(host: String, port: Number, options: `T$36` = definedExternally)
+ fun goOffline(): Any
+ fun goOnline(): Any
+ fun ref(path: String = definedExternally): Reference
+ fun refFromURL(url: String): Reference
+}
+
+external interface OnDisconnect {
+ fun cancel(onComplete: (a: Error?) -> Any = definedExternally): Promise
+ fun remove(onComplete: (a: Error?) -> Any = definedExternally): Promise
+ fun set(value: Any, onComplete: (a: Error?) -> Any = definedExternally): Promise
+ fun setWithPriority(value: Any, priority: Number?, onComplete: (a: Error?) -> Any = definedExternally): Promise
+ fun setWithPriority(value: Any, priority: Number?): Promise
+ fun setWithPriority(value: Any, priority: String?, onComplete: (a: Error?) -> Any = definedExternally): Promise
+ fun setWithPriority(value: Any, priority: String?): Promise
+ fun update(values: Any, onComplete: (a: Error?) -> Any = definedExternally): Promise
+}
+
+external interface Query {
+ fun endAt(value: Number?, key: String = definedExternally): Query
+ fun endAt(value: Number?): Query
+ fun endAt(value: String?, key: String = definedExternally): Query
+ fun endAt(value: String?): Query
+ fun endAt(value: Boolean?, key: String = definedExternally): Query
+ fun endAt(value: Boolean?): Query
+ fun endBefore(value: Number?, key: String = definedExternally): Query
+ fun endBefore(value: Number?): Query
+ fun endBefore(value: String?, key: String = definedExternally): Query
+ fun endBefore(value: String?): Query
+ fun endBefore(value: Boolean?, key: String = definedExternally): Query
+ fun endBefore(value: Boolean?): Query
+ fun equalTo(value: Number?, key: String = definedExternally): Query
+ fun equalTo(value: Number?): Query
+ fun equalTo(value: String?, key: String = definedExternally): Query
+ fun equalTo(value: String?): Query
+ fun equalTo(value: Boolean?, key: String = definedExternally): Query
+ fun equalTo(value: Boolean?): Query
+ fun isEqual(other: Query?): Boolean
+ fun limitToFirst(limit: Number): Query
+ fun limitToLast(limit: Number): Query
+ fun off(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */ = definedExternally, callback: (a: DataSnapshot, b: String?) -> Any = definedExternally, context: Any? = definedExternally)
+ fun get(): Promise
+ fun on(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, callback: (a: DataSnapshot, b: String?) -> Any, cancelCallbackOrContext: ((a: Error) -> Any)? = definedExternally, context: Any? = definedExternally): (a: DataSnapshot?, b: String?) -> Any
+ fun on(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, callback: (a: DataSnapshot, b: String?) -> Any): (a: DataSnapshot?, b: String?) -> Any
+ fun on(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, callback: (a: DataSnapshot, b: String?) -> Any, cancelCallbackOrContext: ((a: Error) -> Any)? = definedExternally): (a: DataSnapshot?, b: String?) -> Any
+ fun on(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, callback: (a: DataSnapshot, b: String?) -> Any, cancelCallbackOrContext: Any? = definedExternally, context: Any? = definedExternally): (a: DataSnapshot?, b: String?) -> Any
+ fun on(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, callback: (a: DataSnapshot, b: String?) -> Any, cancelCallbackOrContext: Any? = definedExternally): (a: DataSnapshot?, b: String?) -> Any
+ fun once(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, successCallback: (a: DataSnapshot, b: String?) -> Any = definedExternally, failureCallbackOrContext: ((a: Error) -> Unit)? = definedExternally, context: Any? = definedExternally): Promise
+ fun once(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */): Promise
+ fun once(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, successCallback: (a: DataSnapshot, b: String?) -> Any = definedExternally): Promise
+ fun once(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, successCallback: (a: DataSnapshot, b: String?) -> Any = definedExternally, failureCallbackOrContext: ((a: Error) -> Unit)? = definedExternally): Promise
+ fun once(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, successCallback: (a: DataSnapshot, b: String?) -> Any = definedExternally, failureCallbackOrContext: Any? = definedExternally, context: Any? = definedExternally): Promise
+ fun once(eventType: String /* "value" | "child_added" | "child_changed" | "child_moved" | "child_removed" */, successCallback: (a: DataSnapshot, b: String?) -> Any = definedExternally, failureCallbackOrContext: Any? = definedExternally): Promise
+ fun orderByChild(path: String): Query
+ fun orderByKey(): Query
+ fun orderByPriority(): Query
+ fun orderByValue(): Query
+ var ref: Reference
+ fun startAt(value: Number?, key: String = definedExternally): Query
+ fun startAt(value: Number?): Query
+ fun startAt(value: String?, key: String = definedExternally): Query
+ fun startAt(value: String?): Query
+ fun startAt(value: Boolean?, key: String = definedExternally): Query
+ fun startAt(value: Boolean?): Query
+ fun startAfter(value: Number?, key: String = definedExternally): Query
+ fun startAfter(value: Number?): Query
+ fun startAfter(value: String?, key: String = definedExternally): Query
+ fun startAfter(value: String?): Query
+ fun startAfter(value: Boolean?, key: String = definedExternally): Query
+ fun startAfter(value: Boolean?): Query
+ fun toJSON(): Any
+ override fun toString(): String
+}
+
+external interface Reference : Query {
+ fun child(path: String): Reference
+ var key: String?
+ fun onDisconnect(): OnDisconnect
+ var parent: Reference?
+ fun push(value: Any = definedExternally, onComplete: (a: Error?) -> Any = definedExternally): ThenableReference
+ fun remove(onComplete: (a: Error?) -> Any = definedExternally): Promise
+ var root: Reference
+ fun set(value: Any, onComplete: (a: Error?) -> Any = definedExternally): Promise
+ fun setPriority(priority: String?, onComplete: (a: Error?) -> Any): Promise
+ fun setPriority(priority: Number?, onComplete: (a: Error?) -> Any): Promise
+ fun setWithPriority(newVal: Any, newPriority: String?, onComplete: (a: Error?) -> Any = definedExternally): Promise
+ fun setWithPriority(newVal: Any, newPriority: String?): Promise
+ fun setWithPriority(newVal: Any, newPriority: Number?, onComplete: (a: Error?) -> Any = definedExternally): Promise
+ fun setWithPriority(newVal: Any, newPriority: Number?): Promise
+ fun transaction(transactionUpdate: (a: Any) -> Any, onComplete: (a: Error?, b: Boolean, c: DataSnapshot?) -> Any = definedExternally, applyLocally: Boolean = definedExternally): Promise
+ fun update(values: Any, onComplete: (a: Error?) -> Any = definedExternally): Promise
+}
+
+external interface ThenableReference : Reference, Pick, String /* "then" | "catch" */>
+
+external fun enableLogging(logger: Boolean = definedExternally, persistent: Boolean = definedExternally): Any
+
+external fun enableLogging(): Any
+
+external fun enableLogging(logger: Boolean = definedExternally): Any
+
+external fun enableLogging(logger: (a: String) -> Any = definedExternally, persistent: Boolean = definedExternally): Any
+
+external fun enableLogging(logger: (a: String) -> Any = definedExternally): Any
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.functions.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.functions.module_firebase_compat.kt
new file mode 100644
index 0000000..2473d0c
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.functions.module_firebase_compat.kt
@@ -0,0 +1,25 @@
+@file:JsQualifier("functions")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface HttpsCallableResult {
+ var data: Any
+}
+
+external interface HttpsCallable {
+ @nativeInvoke
+ operator fun invoke(data: Any = definedExternally): Promise
+}
+
+external interface HttpsCallableOptions {
+ var timeout: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external open class Functions {
+ open fun useEmulator(host: String, port: Number)
+ open fun useFunctionsEmulator(url: String)
+ open fun httpsCallable(name: String, options: HttpsCallableOptions = definedExternally): HttpsCallable
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.installations.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.installations.module_firebase_compat.kt
new file mode 100644
index 0000000..bffea69
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.installations.module_firebase_compat.kt
@@ -0,0 +1,12 @@
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+import App
+
+external interface Installations {
+ var app: App
+ fun getId(): Promise
+ fun getToken(forceRefresh: Boolean = definedExternally): Promise
+ fun delete(): Promise
+ fun onIdChange(callback: (installationId: String) -> Unit): () -> Unit
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.messaging.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.messaging.module_firebase_compat.kt
new file mode 100644
index 0000000..6be8e63
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.messaging.module_firebase_compat.kt
@@ -0,0 +1,60 @@
+@file:JsQualifier("messaging")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+import org.w3c.workers.*
+
+external interface `T$37` {
+ var vapidKey: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var serviceWorkerRegistration: ServiceWorkerRegistration?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface Messaging {
+ fun deleteToken(): Promise
+ fun getToken(options: `T$37` = definedExternally): Promise
+ fun onMessage(nextOrObserver: NextFn): Unsubscribe
+ fun onMessage(nextOrObserver: Observer__1): Unsubscribe
+ fun onBackgroundMessage(nextOrObserver: NextFn): Unsubscribe
+ fun onBackgroundMessage(nextOrObserver: Observer__1): Unsubscribe
+}
+
+external interface MessagePayload {
+ var notification: NotificationPayload?
+ get() = definedExternally
+ set(value) = definedExternally
+ var data: `T$9`?
+ get() = definedExternally
+ set(value) = definedExternally
+ var fcmOptions: FcmOptions?
+ get() = definedExternally
+ set(value) = definedExternally
+ var from: String
+ var collapseKey: String
+}
+
+external interface FcmOptions {
+ var link: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var analyticsLabel: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface NotificationPayload {
+ var title: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var body: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var image: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external fun isSupported(): Boolean
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.module_firebase_compat.kt
new file mode 100644
index 0000000..1350a80
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.module_firebase_compat.kt
@@ -0,0 +1,220 @@
+@file:JsQualifier("firebase")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface FirebaseError {
+ var code: String
+ var message: String
+ var name: String /* "FirebaseError" */
+ var stack: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface Observer {
+ var next: NextFn
+ var error: ErrorFn
+ var complete: CompleteFn
+}
+
+external interface Observer__1 : Observer
+
+external var SDK_VERSION: String
+
+external fun registerVersion(library: String, version: String, variant: String = definedExternally)
+
+external fun setLogLevel(logLevel: String /* "debug" | "verbose" | "info" | "warn" | "error" | "silent" */)
+
+external interface `T$0` {
+ var level: String /* "debug" | "verbose" | "info" | "warn" | "error" | "silent" */
+ var message: String
+ var args: Array
+ var type: String
+}
+
+external interface `T$1` {
+ var level: String /* "debug" | "verbose" | "info" | "warn" | "error" | "silent" */
+}
+
+external fun onLog(logCallback: (callbackParams: `T$0`) -> Unit, options: `T$1` = definedExternally)
+
+external interface `T$2` {
+ var displayName: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var photoURL: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE")
+external interface User : UserInfo {
+ fun delete(): Promise
+ var emailVerified: Boolean
+ fun getIdTokenResult(forceRefresh: Boolean = definedExternally): Promise
+ fun getIdToken(forceRefresh: Boolean = definedExternally): Promise
+ var isAnonymous: Boolean
+ fun linkAndRetrieveDataWithCredential(credential: AuthCredential): Promise
+ fun linkWithCredential(credential: AuthCredential): Promise
+ fun linkWithPhoneNumber(phoneNumber: String, applicationVerifier: ApplicationVerifier): Promise
+ fun linkWithPopup(provider: AuthProvider): Promise
+ fun linkWithRedirect(provider: AuthProvider): Promise
+ var metadata: UserMetadata
+ var multiFactor: MultiFactorUser
+ override var phoneNumber: String?
+ var providerData: Array
+ fun reauthenticateAndRetrieveDataWithCredential(credential: AuthCredential): Promise
+ fun reauthenticateWithCredential(credential: AuthCredential): Promise
+ fun reauthenticateWithPhoneNumber(phoneNumber: String, applicationVerifier: ApplicationVerifier): Promise
+ fun reauthenticateWithPopup(provider: AuthProvider): Promise
+ fun reauthenticateWithRedirect(provider: AuthProvider): Promise
+ var refreshToken: String
+ fun reload(): Promise
+ fun sendEmailVerification(actionCodeSettings: ActionCodeSettings? = definedExternally): Promise
+ var tenantId: String?
+ fun toJSON(): Any
+ fun unlink(providerId: String): Promise
+ fun updateEmail(newEmail: String): Promise
+ fun updatePassword(newPassword: String): Promise
+ fun updatePhoneNumber(phoneCredential: AuthCredential): Promise
+ fun updateProfile(profile: `T$2`): Promise
+ fun verifyBeforeUpdateEmail(newEmail: String, actionCodeSettings: ActionCodeSettings? = definedExternally): Promise
+ interface MultiFactorUser {
+ var enrolledFactors: Array
+ fun enroll(assertion: MultiFactorAssertion, displayName: String? = definedExternally): Promise
+ fun getSession(): Promise
+ fun unenroll(option: MultiFactorInfo): Promise
+ fun unenroll(option: String): Promise
+ }
+}
+
+external interface UserInfo {
+ var displayName: String?
+ var email: String?
+ var phoneNumber: String?
+ var photoURL: String?
+ var providerId: String
+ var uid: String
+}
+
+external interface `T$3` {
+ var sign_in_provider: String /* "custom" | "email" | "password" | "phone" | "anonymous" | "google.com" | "facebook.com" | "github.com" | "twitter.com" | "microsoft.com" | "apple.com" */
+ var identities: Any?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface FirebaseIdToken {
+ var iss: String
+ var aud: String
+ var sub: String
+ var iat: Number
+ var exp: Number
+ var user_id: String
+ var auth_time: Number
+ var provider_id: String? /* "anonymous" */
+ get() = definedExternally
+ set(value) = definedExternally
+ var email: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var email_verified: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var phone_number: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var picture: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var firebase: `T$3`
+ @nativeGetter
+ operator fun get(claim: String): Any?
+ @nativeSetter
+ operator fun set(claim: String, value: Any)
+ var uid: Any?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface FirebaseIdTokenPartial {
+ var iss: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var aud: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var sub: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var iat: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var exp: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var user_id: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var auth_time: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var provider_id: String? /* "anonymous" */
+ get() = definedExternally
+ set(value) = definedExternally
+ var email: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var email_verified: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var phone_number: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var name: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var picture: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var firebase: `T$3`?
+ get() = definedExternally
+ set(value) = definedExternally
+ var uid: Any?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface `T$4` {
+ var user_id: String
+}
+
+external interface `T$5` {
+ var sub: String
+}
+
+external fun app(name: String = definedExternally): App
+
+external var apps: Array
+
+external fun auth(app: App = definedExternally): Auth
+
+external fun database(app: App = definedExternally): Database
+
+external fun initializeApp(options: Any, name: String = definedExternally): App
+
+external fun messaging(app: App = definedExternally): Messaging
+
+external fun functions(app: App = definedExternally): Functions
+
+external fun performance(app: App = definedExternally): Performance
+
+external fun remoteConfig(app: App = definedExternally): RemoteConfig
+
+external fun analytics(app: App = definedExternally): Analytics
+
+external fun appCheck(app: App = definedExternally): AppCheck
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.performance.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.performance.module_firebase_compat.kt
new file mode 100644
index 0000000..5fcc96b
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.performance.module_firebase_compat.kt
@@ -0,0 +1,46 @@
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface Performance {
+ var app: App
+ fun trace(traceName: String): Trace
+ var instrumentationEnabled: Boolean
+ var dataCollectionEnabled: Boolean
+}
+
+external interface `T$8` {
+ @nativeGetter
+ operator fun get(key: String): Number?
+ @nativeSetter
+ operator fun set(key: String, value: Number)
+}
+
+external interface `T$9` {
+ @nativeGetter
+ operator fun get(key: String): String?
+ @nativeSetter
+ operator fun set(key: String, value: String)
+}
+
+external interface `T$10` {
+ var metrics: `T$8`?
+ get() = definedExternally
+ set(value) = definedExternally
+ var attributes: `T$9`?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface Trace {
+ fun start()
+ fun stop()
+ fun record(startTime: Number, duration: Number, options: `T$10` = definedExternally)
+ fun incrementMetric(metricName: String, num: Number = definedExternally)
+ fun putMetric(metricName: String, num: Number)
+ fun getMetric(metricName: String): Number
+ fun putAttribute(attr: String, value: String)
+ fun getAttribute(attr: String): String?
+ fun removeAttribute(attr: String)
+ fun getAttributes(): `T$9`
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/index.firebase.remoteConfig.module_firebase_compat.kt b/sample-firebase/src/main/kotlin/index.firebase.remoteConfig.module_firebase_compat.kt
new file mode 100644
index 0000000..42d235d
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/index.firebase.remoteConfig.module_firebase_compat.kt
@@ -0,0 +1,54 @@
+@file:JsQualifier("remoteConfig")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface `T$11` {
+ @nativeGetter
+ operator fun get(key: String): dynamic /* String? | Number? | Boolean? */
+ @nativeSetter
+ operator fun set(key: String, value: String)
+ @nativeSetter
+ operator fun set(key: String, value: Number)
+ @nativeSetter
+ operator fun set(key: String, value: Boolean)
+}
+
+external interface `T$12` {
+ @nativeGetter
+ operator fun get(key: String): Value?
+ @nativeSetter
+ operator fun set(key: String, value: Value)
+}
+
+external interface RemoteConfig {
+ var app: App
+ var settings: Settings
+ var defaultConfig: `T$11`
+ var fetchTimeMillis: Number
+ var lastFetchStatus: String /* "no-fetch-yet" | "success" | "failure" | "throttle" */
+ fun activate(): Promise
+ fun ensureInitialized(): Promise
+ fun fetch(): Promise
+ fun fetchAndActivate(): Promise
+ fun getAll(): `T$12`
+ fun getBoolean(key: String): Boolean
+ fun getNumber(key: String): Number
+ fun getString(key: String): String
+ fun getValue(key: String): Value
+ fun setLogLevel(logLevel: String /* "debug" | "error" | "silent" */)
+}
+
+external interface Value {
+ fun asBoolean(): Boolean
+ fun asNumber(): Number
+ fun asString(): String
+ fun getSource(): String /* "static" | "default" | "remote" */
+}
+
+external interface Settings {
+ var minimumFetchIntervalMillis: Number
+ var fetchTimeoutMillis: Number
+}
+
+external fun isSupported(): Promise
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/lib.es2015.collection.kt b/sample-firebase/src/main/kotlin/lib.es2015.collection.kt
new file mode 100644
index 0000000..1c1a7fe
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/lib.es2015.collection.kt
@@ -0,0 +1,13 @@
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface ReadonlyMap {
+ fun entries(): IterableIterator */>
+ fun keys(): IterableIterator
+ fun values(): IterableIterator
+ fun forEach(callbackfn: (value: V, key: K, map: ReadonlyMap) -> Unit, thisArg: Any = definedExternally)
+ fun get(key: K): V?
+ fun has(key: K): Boolean
+ var size: Number
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/lib.es2015.iterable.kt b/sample-firebase/src/main/kotlin/lib.es2015.iterable.kt
new file mode 100644
index 0000000..26f9487
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/lib.es2015.iterable.kt
@@ -0,0 +1,41 @@
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface IteratorYieldResult {
+ var done: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: TYield
+}
+
+external interface IteratorReturnResult {
+ var done: Boolean
+ var value: TReturn
+}
+
+external interface Iterator {
+ fun next(vararg args: Any /* JsTuple<> | JsTuple */): dynamic /* IteratorYieldResult | IteratorReturnResult */
+ val `return`: ((value: TReturn) -> dynamic)?
+ val `throw`: ((e: Any) -> dynamic)?
+}
+
+typealias Iterator__1 = Iterator
+
+external interface Iterable
+
+external interface IterableIterator : Iterator__1
+
+external interface PromiseConstructor {
+ var prototype: Promise
+ fun all(values: Any /* JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple */): Promise | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple | JsTuple */>
+ fun all(values: Array */>): Promise>
+ fun race(values: Array): Promise
+ fun reject(reason: Any = definedExternally): Promise
+ fun resolve(value: T): Promise
+ fun resolve(value: PromiseLike): Promise
+ fun resolve(): Promise
+ fun all(values: Iterable */>): Promise>
+ fun race(values: Iterable): Promise
+ fun race(values: Iterable */>): Promise
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/lib.es5.Intl.module_dukat.kt b/sample-firebase/src/main/kotlin/lib.es5.Intl.module_dukat.kt
new file mode 100644
index 0000000..ee119cc
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/lib.es5.Intl.module_dukat.kt
@@ -0,0 +1,207 @@
+@file:JsQualifier("tsstdlib.Intl")
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+
+external interface CollatorOptions {
+ var usage: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var localeMatcher: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var numeric: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var caseFirst: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var sensitivity: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var ignorePunctuation: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface ResolvedCollatorOptions {
+ var locale: String
+ var usage: String
+ var sensitivity: String
+ var ignorePunctuation: Boolean
+ var collation: String
+ var caseFirst: String
+ var numeric: Boolean
+}
+
+@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE")
+external interface Collator {
+ fun compare(x: String, y: String): Number
+ fun resolvedOptions(): ResolvedCollatorOptions
+
+ companion object {
+ @nativeInvoke
+ operator fun invoke(locales: Any /* String | Array */ = definedExternally, options: CollatorOptions = definedExternally): Collator
+ fun supportedLocalesOf(locales: Any /* String | Array */, options: CollatorOptions = definedExternally): Array
+ }
+}
+
+external interface NumberFormatOptions {
+ var localeMatcher: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var style: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var currencyDisplay: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var useGrouping: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var minimumIntegerDigits: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var minimumFractionDigits: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var maximumFractionDigits: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var minimumSignificantDigits: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var maximumSignificantDigits: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface ResolvedNumberFormatOptions {
+ var locale: String
+ var numberingSystem: String
+ var style: String
+ var currency: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var currencyDisplay: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var minimumIntegerDigits: Number
+ var minimumFractionDigits: Number
+ var maximumFractionDigits: Number
+ var minimumSignificantDigits: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var maximumSignificantDigits: Number?
+ get() = definedExternally
+ set(value) = definedExternally
+ var useGrouping: Boolean
+}
+
+@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE")
+external interface NumberFormat {
+ fun format(value: Number): String
+ fun resolvedOptions(): ResolvedNumberFormatOptions
+
+ companion object {
+ @nativeInvoke
+ operator fun invoke(locales: Any /* String | Array */ = definedExternally, options: NumberFormatOptions = definedExternally): NumberFormat
+ fun supportedLocalesOf(locales: Any /* String | Array */, options: NumberFormatOptions = definedExternally): Array
+ }
+}
+
+external interface DateTimeFormatOptions {
+ var localeMatcher: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var weekday: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var era: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var year: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var month: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var day: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var hour: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var minute: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var second: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var timeZoneName: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var formatMatcher: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var hour12: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var timeZone: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+external interface ResolvedDateTimeFormatOptions {
+ var locale: String
+ var calendar: String
+ var numberingSystem: String
+ var timeZone: String
+ var hour12: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var weekday: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var era: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var year: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var month: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var day: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var hour: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var minute: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var second: String?
+ get() = definedExternally
+ set(value) = definedExternally
+ var timeZoneName: String?
+ get() = definedExternally
+ set(value) = definedExternally
+}
+
+@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE")
+external interface DateTimeFormat {
+ fun format(date: Date = definedExternally): String
+ fun format(): String
+ fun format(date: Number = definedExternally): String
+ fun resolvedOptions(): ResolvedDateTimeFormatOptions
+
+ companion object {
+ @nativeInvoke
+ operator fun invoke(locales: Any /* String | Array */ = definedExternally, options: DateTimeFormatOptions = definedExternally): DateTimeFormat
+ fun supportedLocalesOf(locales: Any /* String | Array */, options: DateTimeFormatOptions = definedExternally): Array
+ }
+}
\ No newline at end of file
diff --git a/sample-firebase/src/main/kotlin/lib.es5.kt b/sample-firebase/src/main/kotlin/lib.es5.kt
new file mode 100644
index 0000000..043814f
--- /dev/null
+++ b/sample-firebase/src/main/kotlin/lib.es5.kt
@@ -0,0 +1,269 @@
+@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+
+import kotlin.js.*
+import org.khronos.webgl.*
+
+external interface PropertyDescriptor {
+ var configurable: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var enumerable: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var value: Any?
+ get() = definedExternally
+ set(value) = definedExternally
+ var writable: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ val get: (() -> Any)?
+ val set: ((v: Any) -> Unit)?
+}
+
+external interface PropertyDescriptorMap {
+ @nativeGetter
+ operator fun get(s: String): PropertyDescriptor?
+ @nativeSetter
+ operator fun set(s: String, value: PropertyDescriptor)
+}
+
+external interface Object {
+ var constructor: Function<*>
+ override fun toString(): String
+ fun toLocaleString(): String
+ fun valueOf(): Any
+ fun hasOwnProperty(v: String): Boolean
+ fun hasOwnProperty(v: Number): Boolean
+ fun hasOwnProperty(v: Any): Boolean
+ fun isPrototypeOf(v: Any): Boolean
+ fun propertyIsEnumerable(v: String): Boolean
+ fun propertyIsEnumerable(v: Number): Boolean
+ fun propertyIsEnumerable(v: Any): Boolean
+}
+
+external interface ObjectConstructor {
+ fun assign(target: T, source: U): T /* T & U */
+ fun assign(target: T, source1: U, source2: V): T /* T & U & V */
+ fun assign(target: T, source1: U, source2: V, source3: W): T /* T & U & V & W */
+ fun assign(target: Any?, vararg sources: Any): Any
+ fun getOwnPropertySymbols(o: Any): Array
+ fun keys(o: Any): Array
+ fun `is`(value1: Any, value2: Any): Boolean
+ fun setPrototypeOf(o: Any, proto: Any?): Any
+ @nativeInvoke
+ operator fun invoke(): Any
+ @nativeInvoke
+ operator fun invoke(value: Any): Any
+ var prototype: Any
+ fun getPrototypeOf(o: Any): Any
+ fun getOwnPropertyDescriptor(o: Any, p: String): PropertyDescriptor?
+ fun getOwnPropertyDescriptor(o: Any, p: Number): PropertyDescriptor?
+ fun getOwnPropertyDescriptor(o: Any, p: Any): PropertyDescriptor?
+ fun getOwnPropertyNames(o: Any): Array
+ fun create(o: Any?): Any
+ fun create(o: Any?, properties: PropertyDescriptorMap /* PropertyDescriptorMap & ThisType */): Any
+ fun defineProperty(o: Any, p: String, attributes: PropertyDescriptor /* PropertyDescriptor & ThisType */): Any
+ fun defineProperty(o: Any, p: Number, attributes: PropertyDescriptor /* PropertyDescriptor & ThisType */): Any
+ fun defineProperty(o: Any, p: Any, attributes: PropertyDescriptor /* PropertyDescriptor & ThisType */): Any
+ fun defineProperties(o: Any, properties: PropertyDescriptorMap /* PropertyDescriptorMap & ThisType */): Any
+ fun seal(o: T): T
+ fun freeze(a: Array): Array
+ fun > freeze(f: T): dynamic
+ fun preventExtensions(o: T): T
+ fun isSealed(o: Any): Boolean
+ fun isFrozen(o: Any): Boolean
+ fun isExtensible(o: Any): Boolean
+ fun keys(o: Any?): Array
+}
+
+external interface FunctionConstructor {
+ @nativeInvoke
+ operator fun invoke(vararg args: String): Function<*>
+ var prototype: Function<*>
+}
+
+external interface DateConstructor {
+ @nativeInvoke
+ operator fun invoke(): String
+ var prototype: Date
+ fun parse(s: String): Number
+ fun UTC(year: Number, month: Number, date: Number = definedExternally, hours: Number = definedExternally, minutes: Number = definedExternally, seconds: Number = definedExternally, ms: Number = definedExternally): Number
+ fun now(): Number
+}
+
+external interface ErrorConstructor {
+ @nativeInvoke
+ operator fun invoke(message: String = definedExternally): Error
+ var prototype: Error
+}
+
+external interface ConcatArray {
+ var length: Number
+ @nativeGetter
+ operator fun get(n: Number): T?
+ @nativeSetter
+ operator fun set(n: Number, value: T)
+ fun join(separator: String = definedExternally): String
+ fun slice(start: Number = definedExternally, end: Number = definedExternally): Array
+}
+
+external interface ArrayConstructor {
+ fun from(iterable: Iterable): Array
+ fun from(iterable: ArrayLike): Array
+ fun from(iterable: Iterable, mapfn: (v: T, k: Number) -> U, thisArg: Any = definedExternally): Array
+ fun from(iterable: Iterable, mapfn: (v: T, k: Number) -> U): Array
+ fun from(iterable: ArrayLike, mapfn: (v: T, k: Number) -> U, thisArg: Any = definedExternally): Array
+ fun from(iterable: ArrayLike, mapfn: (v: T, k: Number) -> U): Array
+ fun of(vararg items: T): Array
+ @nativeInvoke
+ operator fun invoke(arrayLength: Number = definedExternally): Array
+ @nativeInvoke
+ operator fun invoke(): Array
+ @nativeInvoke
+ operator fun invoke(arrayLength: Number): Array
+ @nativeInvoke
+ operator fun invoke(vararg items: T): Array
+ fun isArray(arg: Any): Boolean
+ var prototype: Array
+}
+
+external interface PromiseLike {
+ fun then(onfulfilled: ((value: T) -> Any?)? = definedExternally, onrejected: ((reason: Any) -> Any?)? = definedExternally): PromiseLike
+}
+
+external interface ArrayLike {
+ var length: Number
+ @nativeGetter
+ operator fun get(n: Number): T?
+ @nativeSetter
+ operator fun set(n: Number, value: T)
+}
+
+typealias Partial