Repository: JoshuaKGoldberg/create-typescript-app (ts)

Issue:
🐛 Bug: `blockPackageJson` ignores `addons.type` if provided
### Bug Report Checklist

- [x] I have tried restarting my IDE and the issue persists.
- [x] I have pulled the latest `main` branch of the repository.
- [x] I have [searched for related issues](https://github.com/JoshuaKGoldberg/create-typescript-app/issues?q=is%3Aissue) and found none that matched my issue.

### Expected

This should customize the generated `package.json`'s `type`:

```js
blockPackageJson({
	properties: {
		type: "commonjs",
	},
}),
```

### Actual

https://github.com/JoshuaKGoldberg/package-json-validator/pull/178/files#r2025641061 shows a `package.json` with a `type` forcefully set to `"module"`.

### Additional Info

🎁 

Pull request description:
fix: allow overriding package.json type
## PR Checklist

- [x] Addresses an existing open issue: fixes #2109
- [x] That issue was marked as [`status: accepting prs`](https://github.com/JoshuaKGoldberg/create-typescript-app/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22)
- [x] Steps in [CONTRIBUTING.md](https://github.com/JoshuaKGoldberg/create-typescript-app/blob/main/.github/CONTRIBUTING.md) were taken

## Overview

🎁 

Patch:
diff --git a/src/blocks/blockPackageJson.ts b/src/blocks/blockPackageJson.ts
index 24458de..72c49ad 100644
--- a/src/blocks/blockPackageJson.ts
+++ b/src/blocks/blockPackageJson.ts
@@ -42,6 +42,7 @@ export const blockPackageJson = base.createBlock({
 				"package.json": sortPackageJson(
 					JSON.stringify(
 						removeUndefinedObjects({
+							type: "module",
 							...options.packageData,
 							...addons.properties,
 							author: { email: options.email.npm, name: options.author },
@@ -75,7 +76,6 @@ export const blockPackageJson = base.createBlock({
 								...options.packageData?.scripts,
 								...addons.properties.scripts,
 							},
-							type: "module",
 							version: options.version ?? "0.0.0",
 						}),
 					),


Test patch:
diff --git a/src/blocks/blockPackageJson.test.ts b/src/blocks/blockPackageJson.test.ts
index 3d8c5cb..793244e 100644
--- a/src/blocks/blockPackageJson.test.ts
+++ b/src/blocks/blockPackageJson.test.ts
@@ -131,6 +131,33 @@ describe("blockPackageJson", () => {
 		`);
 	});
 
+	test("with addons adding type", () => {
+		const creation = testBlock(blockPackageJson, {
+			addons: {
+				properties: {
+					type: "commonjs",
+				},
+			},
+			options,
+		});
+
+		expect(creation).toMatchInlineSnapshot(`
+			{
+			  "files": {
+			    "package.json": "{"name":"test-repository","version":"0.0.0","description":"A very very very very very very very very very very very very very very very very long HTML-ish description ending with an emoji. 🧵","repository":{"type":"git","url":"git+https://github.com/test-owner/test-repository.git"},"author":{"email":"npm@email.com"},"type":"commonjs","files":["README.md","package.json"],"engines":{"node":">=20.12.0"}}",
+			  },
+			  "scripts": [
+			    {
+			      "commands": [
+			        "pnpm install --no-frozen-lockfile",
+			      ],
+			      "phase": 1,
+			    },
+			  ],
+			}
+		`);
+	});
+
 	test("with addons adding overlapping files", () => {
 		const creation = testBlock(blockPackageJson, {
 			addons: {