diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index 7ca84a8..0515b71 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -12,6 +12,10 @@ jobs: build: runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + environment: name: MavenCentral diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 271ebd6..5084e68 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -19,7 +19,9 @@ jobs: - uses: gradle/actions/dependency-submission@v5 dependency-review: - runs-on: ubuntu-latest + runs-on: ubuntu-slim + permissions: {} + needs: dependency-submission if: github.event_name == 'pull_request' steps: diff --git a/gradle/build-logic/build.gradle.kts b/gradle/build-logic/build.gradle.kts index f87034b..616b661 100644 --- a/gradle/build-logic/build.gradle.kts +++ b/gradle/build-logic/build.gradle.kts @@ -9,6 +9,8 @@ dependencies { implementation(libs.plugins.licensee.toDep()) implementation(libs.plugins.detekt.toDep()) implementation(libs.plugins.mavencentral.toDep()) + implementation(libs.plugins.sigstore.toDep()) + implementation(libs.plugins.foojay.toDep()) implementation(libs.serialization.xml) { exclude("io.github.pdvrieze.xmlutil", "core") } diff --git a/gradle/build-logic/settings.gradle.kts b/gradle/build-logic/settings.gradle.kts index 99a9a62..fe24033 100644 --- a/gradle/build-logic/settings.gradle.kts +++ b/gradle/build-logic/settings.gradle.kts @@ -2,6 +2,7 @@ dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { mavenCentral() + gradlePluginPortal() } versionCatalogs.register("libs") { from(files("../libs.versions.toml")) diff --git a/gradle/build-logic/src/main/kotlin/MyRepos.settings.gradle.kts b/gradle/build-logic/src/main/kotlin/MyRepos.settings.gradle.kts index 223f94f..2adbffd 100644 --- a/gradle/build-logic/src/main/kotlin/MyRepos.settings.gradle.kts +++ b/gradle/build-logic/src/main/kotlin/MyRepos.settings.gradle.kts @@ -1,3 +1,7 @@ +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") +} + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { diff --git a/gradle/build-logic/src/main/kotlin/publishedLibrary.gradle.kts b/gradle/build-logic/src/main/kotlin/publishedLibrary.gradle.kts index b0e97fb..a1e3082 100644 --- a/gradle/build-logic/src/main/kotlin/publishedLibrary.gradle.kts +++ b/gradle/build-logic/src/main/kotlin/publishedLibrary.gradle.kts @@ -1,12 +1,11 @@ import org.gradle.api.publish.maven.* -import org.gradle.kotlin.dsl.* -import java.util.* plugins { id("setup") id("maven-publish") id("signing") id("io.github.hfhbd.mavencentral") + id("dev.sigstore.sign") } kotlin { @@ -55,11 +54,12 @@ publishing { } signing { - val signingKey = providers.gradleProperty("SIGNING_PRIVATE_KEY") - if (signingKey.isPresent) { - useInMemoryPgpKeys(signingKey.get(), providers.gradleProperty("SIGNING_PASSWORD").get()) - sign(publishing.publications) - } + useInMemoryPgpKeys( + project.providers.gradleProperty("signingKey").orNull, + project.providers.gradleProperty("signingPassword").orNull, + ) + isRequired = project.providers.gradleProperty("signingKey").isPresent + sign(publishing.publications) } // https://youtrack.jetbrains.com/issue/KT-46466 diff --git a/gradle/build-logic/src/main/kotlin/setup.gradle.kts b/gradle/build-logic/src/main/kotlin/setup.gradle.kts index cef66b9..70b2af4 100644 --- a/gradle/build-logic/src/main/kotlin/setup.gradle.kts +++ b/gradle/build-logic/src/main/kotlin/setup.gradle.kts @@ -6,14 +6,8 @@ plugins { kotlin { js { + browser() useEsModules() - browser { - commonWebpackConfig { - scssSupport { - enabled.set(true) - } - } - } compilerOptions { target.set("es2015") } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f664330..2d89d21 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] -kotlin = "2.2.21" -compose = "1.9.0" +kotlin = "2.3.0" +compose = "1.9.3" coroutines = "1.10.2" xml = "0.91.3" @@ -23,3 +23,5 @@ kotlin-plugin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.re licensee = { id = "app.cash.licensee", version = "1.14.1" } detekt = { id = "io.gitlab.arturbosch.detekt", version = "1.23.8" } mavencentral = { id = "io.github.hfhbd.mavencentral", version = "0.0.23" } +foojay = { id = "org.gradle.toolchains.foojay-resolver-convention", version = "1.0.0" } +sigstore = { id = "dev.sigstore.sign", version = "2.0.0" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3620aed..8a84887 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=2fdde961d051e8fc4c9918aa40d3eee24fd9f1d32f705f517af9c89d758af3be -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-rc-1-bin.zip +distributionSha256Sum=72f44c9f8ebcb1af43838f45ee5c4aa9c5444898b3468ab3f4af7b6076c5bc3f +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/kotlin-js-store/package-lock.json b/kotlin-js-store/package-lock.json index b1edf17..219028c 100644 --- a/kotlin-js-store/package-lock.json +++ b/kotlin-js-store/package-lock.json @@ -14,7 +14,7 @@ "packages/bootstrap-compose-bootstrap-compose-icons-test", "packages/bootstrap-compose-showcase", "packages/bootstrap-compose-showcase-test", - "packages_imported/html-core-js/1.9.0" + "packages_imported/html-core-js/1.9.3" ], "devDependencies": {} }, @@ -2744,7 +2744,7 @@ } }, "node_modules/html-core-js": { - "resolved": "packages_imported/html-core-js/1.9.0", + "resolved": "packages_imported/html-core-js/1.9.3", "link": true }, "node_modules/http-deceiver": { @@ -3192,9 +3192,9 @@ }, "node_modules/karma": { "version": "6.4.4", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", - "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", + "resolved": "git+ssh://git@github.com/Kotlin/karma.git#239a8fc984584f0d96b1dd750e7a5e2c79da93a6", "dev": true, + "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -3306,10 +3306,11 @@ } }, "node_modules/kotlin-web-helpers": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/kotlin-web-helpers/-/kotlin-web-helpers-2.1.0.tgz", - "integrity": "sha512-NAJhiNB84tnvJ5EQx7iER3GWw7rsTZkX9HVHZpe7E3dDBD/dhTzqgSwNU3MfQjniy2rB04bP24WM9Z32ntUWRg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/kotlin-web-helpers/-/kotlin-web-helpers-3.0.0.tgz", + "integrity": "sha512-kdQO4AJQkUPvpLh9aglkXDRyN+CfXO7pKq+GESEnxooBFkQpytLrqZis3ABvmFN1cGw/ZQ/K38u5sRGW+NfBnw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "format-util": "^1.0.5" } @@ -3570,10 +3571,11 @@ } }, "node_modules/mocha": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.1.tgz", - "integrity": "sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A==", + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.2.tgz", + "integrity": "sha512-lkqVJPmqqG/w5jmmFtiRvtA2jkDyNVUcefFJKb2uyX4dekk8Okgqop3cgbFiaIvj8uCRJVTP5x9dfxGyXm2jvQ==", "dev": true, + "license": "MIT", "dependencies": { "browser-stdout": "^1.3.1", "chokidar": "^4.0.1", @@ -4484,10 +4486,11 @@ "dev": true }, "node_modules/sass": { - "version": "1.89.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", - "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", + "version": "1.92.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.92.0.tgz", + "integrity": "sha512-KDNI0BxgIRDAfJgzNm5wuy+4yOCIZyrUbjSpiU/JItfih+KGXAVefKL53MTml054MmBA3DDKIBMSI/7XLxZJ3A==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -5612,10 +5615,11 @@ } }, "node_modules/webpack": { - "version": "5.100.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.100.2.tgz", - "integrity": "sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==", + "version": "5.101.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", + "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -5627,7 +5631,7 @@ "acorn-import-phases": "^1.0.3", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.2", + "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -6078,6 +6082,12 @@ "packages_imported/html-core-js/1.9.0": { "name": "html-core-js", "version": "1.9.0", + "extraneous": true, + "devDependencies": {} + }, + "packages_imported/html-core-js/1.9.3": { + "name": "html-core-js", + "version": "1.9.3", "devDependencies": {} }, "packages/bootstrap-compose-bootstrap-compose": { @@ -6098,19 +6108,15 @@ "version": "0.0.0-unspecified", "devDependencies": { "bootstrap-icons": "1.13.1", - "css-loader": "7.1.2", - "karma": "6.4.4", + "karma": "github:Kotlin/karma#6.4.5", "karma-chrome-launcher": "3.2.0", "karma-mocha": "2.0.1", "karma-sourcemap-loader": "0.4.0", "karma-webpack": "5.0.1", - "kotlin-web-helpers": "2.1.0", - "mocha": "11.7.1", - "sass": "1.89.2", - "sass-loader": "16.0.5", + "kotlin-web-helpers": "3.0.0", + "mocha": "11.7.2", "source-map-loader": "5.0.0", - "style-loader": "4.0.0", - "webpack": "5.100.2", + "webpack": "5.101.3", "webpack-cli": "6.0.1" } }, @@ -6121,19 +6127,15 @@ "bootstrap": "5.3.8" }, "devDependencies": { - "css-loader": "7.1.2", - "karma": "6.4.4", + "karma": "github:Kotlin/karma#6.4.5", "karma-chrome-launcher": "3.2.0", "karma-mocha": "2.0.1", "karma-sourcemap-loader": "0.4.0", "karma-webpack": "5.0.1", - "kotlin-web-helpers": "2.1.0", - "mocha": "11.7.1", - "sass": "1.89.2", - "sass-loader": "16.0.5", + "kotlin-web-helpers": "3.0.0", + "mocha": "11.7.2", "source-map-loader": "5.0.0", - "style-loader": "4.0.0", - "webpack": "5.100.2", + "webpack": "5.101.3", "webpack-cli": "6.0.1" } }, @@ -6144,9 +6146,9 @@ "bootstrap": "5.3.8" }, "devDependencies": { - "kotlin-web-helpers": "2.1.0", + "kotlin-web-helpers": "3.0.0", "source-map-loader": "5.0.0", - "webpack": "5.100.2", + "webpack": "5.101.3", "webpack-cli": "6.0.1", "webpack-dev-server": "5.2.2" } @@ -6159,18 +6161,18 @@ }, "devDependencies": { "css-loader": "7.1.2", - "karma": "6.4.4", + "karma": "github:Kotlin/karma#6.4.5", "karma-chrome-launcher": "3.2.0", "karma-mocha": "2.0.1", "karma-sourcemap-loader": "0.4.0", "karma-webpack": "5.0.1", - "kotlin-web-helpers": "2.1.0", - "mocha": "11.7.1", - "sass": "1.89.2", + "kotlin-web-helpers": "3.0.0", + "mocha": "11.7.2", + "sass": "1.92.0", "sass-loader": "16.0.5", "source-map-loader": "5.0.0", "style-loader": "4.0.0", - "webpack": "5.100.2", + "webpack": "5.101.3", "webpack-cli": "6.0.1" } } diff --git a/settings.gradle.dcl b/settings.gradle.dcl index 2198bd5..b66011b 100644 --- a/settings.gradle.dcl +++ b/settings.gradle.dcl @@ -8,7 +8,6 @@ pluginManagement { plugins { id("MyRepos") - id("org.gradle.toolchains.foojay-resolver-convention").version("1.0.0") } enableFeaturePreview("STABLE_CONFIGURATION_CACHE") diff --git a/showcase/build.gradle.kts b/showcase/build.gradle.kts index d6ecb1d..8d2da5a 100644 --- a/showcase/build.gradle.kts +++ b/showcase/build.gradle.kts @@ -6,9 +6,10 @@ kotlin { js { browser { binaries.executable() - useEsModules() - compilerOptions { - target.set("es2015") + commonWebpackConfig { + scssSupport { + enabled.set(true) + } } } } diff --git a/showcase/src/jsMain/kotlin/app/softwork/bootstrapcompose/showcase/InputGroupView.kt b/showcase/src/jsMain/kotlin/app/softwork/bootstrapcompose/showcase/InputGroupView.kt index 4409b0d..1a8cc28 100644 --- a/showcase/src/jsMain/kotlin/app/softwork/bootstrapcompose/showcase/InputGroupView.kt +++ b/showcase/src/jsMain/kotlin/app/softwork/bootstrapcompose/showcase/InputGroupView.kt @@ -404,7 +404,7 @@ private fun CustomFileInputView() { attrs = { classes("btn-outline-secondary") } ) { upload!!.value = "" - upload!!.click() + upload.click() } } }