{"_id":"@amitgurbani/wpts","_rev":"7-f11b48a8f345cc3c9c7fef57a4d79fba","name":"@amitgurbani/wpts","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@amitgurbani/wpts","version":"0.1.0","keywords":["wordpress","typescript","transpiler","plugin","php"],"author":{"name":"Amit Gurbani"},"license":"MIT","_id":"@amitgurbani/wpts@0.1.0","maintainers":[{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"}],"homepage":"https://github.com/AmitGurbani/wordpress-plugins/tree/main/packages/wpts#readme","bugs":{"url":"https://github.com/AmitGurbani/wordpress-plugins/issues"},"bin":{"wpts":"bin/wpts.js"},"dist":{"shasum":"b669057e9f60163cc6a66af96a250c7e3f640e51","tarball":"https://registry.npmjs.org/@amitgurbani/wpts/-/wpts-0.1.0.tgz","fileCount":163,"integrity":"sha512-leKMAaxAZFnECjKqGwjPkd8nWyM0VPB5uptF+tkSh3A4nWFaMWkLcbzCpS9wI8zxmxGIoMq1yvF7v8wd5rKRIA==","signatures":[{"sig":"MEUCIEJeIxh02SVvWDKoco3SlRxeiq+bo2reU0dMJczLXlnaAiEAkgFLb0w29k+jfvSJ5LBIS9abj7BqmG7aL1zOPLy3B0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":403115},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./package.json":"./package.json"},"gitHead":"7ef9fd619b197c9bfca79f7d57a48a1ad52f889a","scripts":{"dev":"tsc -p tsconfig.build.json --watch","lint":"biome lint src/ tests/","test":"vitest run","build":"tsc -p tsconfig.build.json && rm -rf dist/src/templates && cp -r src/templates dist/src/templates","check":"biome check src/ tests/","test:watch":"vitest","prepublishOnly":"pnpm run build && pnpm run test"},"_npmUser":{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"},"repository":{"url":"git+https://github.com/AmitGurbani/wordpress-plugins.git","type":"git","directory":"packages/wpts"},"_npmVersion":"11.12.1","description":"TypeScript-to-WordPress-Plugin transpiler","directories":{},"_nodeVersion":"24.11.1","dependencies":{"chalk":"^5.6.2","archiver":"^7.0.1","chokidar":"^5.0.0","fs-extra":"^11.3.0","commander":"^14.0.3","handlebars":"^4.7.8","typescript":"^5.9.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","@types/node":"^25.3.0","@types/react":"^19.2.14","@types/archiver":"^7.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/wpts_0.1.0_1776857600043_0.10256897157789502","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@amitgurbani/wpts","version":"0.1.1","keywords":["wordpress","typescript","transpiler","plugin","php"],"author":{"name":"Amit Gurbani"},"license":"MIT","_id":"@amitgurbani/wpts@0.1.1","maintainers":[{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"}],"homepage":"https://github.com/AmitGurbani/wordpress-plugins/tree/main/packages/wpts#readme","bugs":{"url":"https://github.com/AmitGurbani/wordpress-plugins/issues"},"bin":{"wpts":"bin/wpts.js"},"dist":{"shasum":"d6129adef17b5570453db446dd59bc962bc171a3","tarball":"https://registry.npmjs.org/@amitgurbani/wpts/-/wpts-0.1.1.tgz","fileCount":159,"integrity":"sha512-JY0ZjoBT2pElUGjJ0XBkyVYk3V64dQzP6teOSs3fLsbuWIDSOKkZUj1SSv40dJ3DUxjFhbmxIlJHIcBZry9qzA==","signatures":[{"sig":"MEUCIQC74pYzJKpJhgdOqYD7+c5R414ig4/V5W+8bmCg/2WJAAIgN7i/5E7yIZntj6i9j4Vzy065qwX3iJRSSZ1j7y0Qloo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amitgurbani%2fwpts@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":402661},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./package.json":"./package.json"},"gitHead":"71de9459c3054a466104143a8b069df5721ee109","scripts":{"dev":"tsc -p tsconfig.build.json --watch","lint":"biome lint src/ tests/","test":"vitest run","build":"tsc -p tsconfig.build.json && rm -rf dist/src/templates && cp -r src/templates dist/src/templates","check":"biome check src/ tests/","test:watch":"vitest","prepublishOnly":"pnpm run build && pnpm run test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87ad8396-339d-4806-88e0-bdc730b222e8"}},"repository":{"url":"git+https://github.com/AmitGurbani/wordpress-plugins.git","type":"git","directory":"packages/wpts"},"_npmVersion":"11.11.0","description":"TypeScript-to-WordPress-Plugin transpiler","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chalk":"^5.6.2","archiver":"^7.0.1","chokidar":"^5.0.0","fs-extra":"^11.3.0","commander":"^14.0.3","handlebars":"^4.7.8","typescript":"^5.9.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","@types/node":"^25.3.0","@types/react":"^19.2.14","@types/archiver":"^7.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/wpts_0.1.1_1776860471932_0.916229689977631","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@amitgurbani/wpts","version":"0.1.2","keywords":["wordpress","typescript","transpiler","plugin","php"],"author":{"name":"Amit Gurbani"},"license":"MIT","_id":"@amitgurbani/wpts@0.1.2","maintainers":[{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"}],"homepage":"https://github.com/AmitGurbani/wordpress-plugins/tree/main/packages/wpts#readme","bugs":{"url":"https://github.com/AmitGurbani/wordpress-plugins/issues"},"bin":{"wpts":"bin/wpts.js"},"dist":{"shasum":"61b252d708a13c0a9a33d05958735b97dcac158f","tarball":"https://registry.npmjs.org/@amitgurbani/wpts/-/wpts-0.1.2.tgz","fileCount":159,"integrity":"sha512-DqdQpsuC+69gcz4FMveuzQrFijdfwi88Oi7CCkyARPrrYqUKjAms6TMItnmuKImEtjt+ffx5tUzL0DgQftJlfQ==","signatures":[{"sig":"MEUCIQDiWjkTC4lrUSvHYVW3aIHgB/lr7Kvt+cK8+17BdJGsoAIgOd+yQI/n2961BrG9w3Ack+HdU/Yesrsb2D9sB/lHSIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amitgurbani%2fwpts@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":404692},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./package.json":"./package.json"},"gitHead":"f37285cad477d9f0f4f0af5123e7f86e8de47708","scripts":{"dev":"tsc -p tsconfig.build.json --watch","lint":"biome lint src/ tests/","test":"vitest run","build":"tsc -p tsconfig.build.json && rm -rf dist/src/templates && cp -r src/templates dist/src/templates","check":"biome check src/ tests/","test:watch":"vitest","prepublishOnly":"pnpm run build && pnpm run test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87ad8396-339d-4806-88e0-bdc730b222e8"}},"repository":{"url":"git+https://github.com/AmitGurbani/wordpress-plugins.git","type":"git","directory":"packages/wpts"},"_npmVersion":"11.12.1","description":"TypeScript-to-WordPress-Plugin transpiler","directories":{},"_nodeVersion":"24.15.0","dependencies":{"chalk":"^5.6.2","archiver":"^7.0.1","chokidar":"^5.0.0","fs-extra":"^11.3.0","commander":"^14.0.3","handlebars":"^4.7.8","typescript":"^5.9.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","@types/node":"^25.3.0","@types/react":"^19.2.14","@types/archiver":"^7.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/wpts_0.1.2_1776884076987_0.8402641896055498","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@amitgurbani/wpts","version":"0.1.3","keywords":["wordpress","typescript","transpiler","plugin","php"],"author":{"name":"Amit Gurbani"},"license":"MIT","_id":"@amitgurbani/wpts@0.1.3","maintainers":[{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"}],"homepage":"https://github.com/AmitGurbani/wordpress-plugins/tree/main/packages/wpts#readme","bugs":{"url":"https://github.com/AmitGurbani/wordpress-plugins/issues"},"bin":{"wpts":"bin/wpts.js"},"dist":{"shasum":"f68a8bd24cf52ccfad818efd213b8794ca6ce786","tarball":"https://registry.npmjs.org/@amitgurbani/wpts/-/wpts-0.1.3.tgz","fileCount":159,"integrity":"sha512-aNeM4G3OyKUkaFyGbPsrO+bgaVGAgj1rsKJnrmRegIjeErPzldS/a6zJP6rZ7TfOfUqmO7rspchsd8L951g4wg==","signatures":[{"sig":"MEUCIQDUklleJvhcqFOgHM2cfwzoMsr3c6QilYNagcv+perWDwIgdfe1rXnt82MiYkQyxKqhR7zJ+zYqTRmDK4o865ayWGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amitgurbani%2fwpts@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":405236},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./package.json":"./package.json"},"gitHead":"f021c409a10414d15dd173f15f6a0f08fe4f7a21","scripts":{"dev":"tsc -p tsconfig.build.json --watch","lint":"biome lint src/ tests/","test":"vitest run","build":"tsc -p tsconfig.build.json && rm -rf dist/src/templates && cp -r src/templates dist/src/templates","check":"biome check src/ tests/","test:watch":"vitest","prepublishOnly":"pnpm run build && pnpm run test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87ad8396-339d-4806-88e0-bdc730b222e8"}},"repository":{"url":"git+https://github.com/AmitGurbani/wordpress-plugins.git","type":"git","directory":"packages/wpts"},"_npmVersion":"11.11.0","description":"TypeScript-to-WordPress-Plugin transpiler","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chalk":"^5.6.2","archiver":"^7.0.1","chokidar":"^5.0.0","fs-extra":"^11.3.0","commander":"^14.0.3","handlebars":"^4.7.8","typescript":"^5.9.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","@types/node":"^25.3.0","@types/react":"^19.2.14","@types/archiver":"^7.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/wpts_0.1.3_1777052442519_0.5980728455951276","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@amitgurbani/wpts","version":"0.1.4","keywords":["wordpress","typescript","transpiler","plugin","php"],"author":{"name":"Amit Gurbani"},"license":"MIT","_id":"@amitgurbani/wpts@0.1.4","maintainers":[{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"}],"homepage":"https://github.com/AmitGurbani/wordpress-plugins/tree/main/packages/wpts#readme","bugs":{"url":"https://github.com/AmitGurbani/wordpress-plugins/issues"},"bin":{"wpts":"bin/wpts.js"},"dist":{"shasum":"e2d43f34934b65de4291f1cf32657f24f9790321","tarball":"https://registry.npmjs.org/@amitgurbani/wpts/-/wpts-0.1.4.tgz","fileCount":159,"integrity":"sha512-Wchi/dMeUnTyhh3Ykvg70NbcZhKLgY1ukZlOB1m1q+KVsjv1IpfDjzYUkEbyRZDjEnQSHYouWYoVU1ZLYrsadQ==","signatures":[{"sig":"MEQCIFhZUIelspnp9A3iAIatBCeAHjZzE1FUwQMQTYXaGbRKAiBQ9Wep3vLUqU5oefHQ9wBV5tEtaNGQ7ZUnL5yeG9naqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amitgurbani%2fwpts@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":405278},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./package.json":"./package.json"},"gitHead":"c18c30c5612e59d4311fab70c4b11fc45421d714","scripts":{"dev":"tsc -p tsconfig.build.json --watch","lint":"biome lint src/ tests/","test":"vitest run","build":"tsc -p tsconfig.build.json && rm -rf dist/src/templates && cp -r src/templates dist/src/templates","check":"biome check src/ tests/","test:watch":"vitest","prepublishOnly":"pnpm run build && pnpm run test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87ad8396-339d-4806-88e0-bdc730b222e8"}},"repository":{"url":"git+https://github.com/AmitGurbani/wordpress-plugins.git","type":"git","directory":"packages/wpts"},"_npmVersion":"11.11.0","description":"TypeScript-to-WordPress-Plugin transpiler","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chalk":"^5.6.2","archiver":"^7.0.1","chokidar":"^5.0.0","fs-extra":"^11.3.0","commander":"^14.0.3","handlebars":"^4.7.8","typescript":"^5.9.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","@types/node":"^25.3.0","@types/react":"^19.2.14","@types/archiver":"^7.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/wpts_0.1.4_1777103147821_0.3949669761628274","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@amitgurbani/wpts","version":"0.2.0","keywords":["wordpress","typescript","transpiler","plugin","php"],"author":{"name":"Amit Gurbani"},"license":"MIT","_id":"@amitgurbani/wpts@0.2.0","maintainers":[{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"}],"homepage":"https://github.com/AmitGurbani/wordpress-plugins/tree/main/packages/wpts#readme","bugs":{"url":"https://github.com/AmitGurbani/wordpress-plugins/issues"},"bin":{"wpts":"bin/wpts.js"},"dist":{"shasum":"039a991d7a8abb8d36f260d5dee49cdd61a2d69a","tarball":"https://registry.npmjs.org/@amitgurbani/wpts/-/wpts-0.2.0.tgz","fileCount":159,"integrity":"sha512-tLHtiQJ88erKx+G3tAeMIw0P6LIdvSA+oeW5RMYlYaKCOFsK1SQK7qDRTunYHp81K7jiHL5RdirFON3tzV6t3A==","signatures":[{"sig":"MEUCIQDmLdbkCebx9la76p1ewilaru+vXQjNj72ujvFJK77ibgIgZThqzIYR4VBFajVNitcJiJoPGFQDUhY3AKBFj+CLCeQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amitgurbani%2fwpts@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":405305},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./package.json":"./package.json"},"gitHead":"46aa3a68e3a5a086b5c9eb8a3aeaffaf7231bec1","scripts":{"dev":"tsc -p tsconfig.build.json --watch","lint":"biome lint src/ tests/","test":"vitest run","build":"tsc -p tsconfig.build.json && rm -rf dist/src/templates && cp -r src/templates dist/src/templates","check":"biome check src/ tests/","test:watch":"vitest","prepublishOnly":"pnpm run build && pnpm run test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87ad8396-339d-4806-88e0-bdc730b222e8"}},"repository":{"url":"git+https://github.com/AmitGurbani/wordpress-plugins.git","type":"git","directory":"packages/wpts"},"_npmVersion":"11.11.0","description":"TypeScript-to-WordPress-Plugin transpiler","directories":{},"_nodeVersion":"24.14.1","dependencies":{"chalk":"^5.6.2","archiver":"^7.0.1","chokidar":"^5.0.0","fs-extra":"^11.3.0","commander":"^14.0.3","handlebars":"^4.7.8","typescript":"^5.9.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","@types/node":"^25.3.0","@types/react":"^19.2.14","@types/archiver":"^7.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/wpts_0.2.0_1777468435657_0.7367133611036294","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amitgurbani/wpts","version":"0.3.0","description":"TypeScript-to-WordPress-Plugin transpiler","type":"module","main":"dist/src/index.js","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./package.json":"./package.json"},"bin":{"wpts":"bin/wpts.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.build.json && rm -rf dist/src/templates && cp -r src/templates dist/src/templates","dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","test:watch":"vitest","lint":"biome lint src/ tests/","check":"biome check src/ tests/","prepublishOnly":"pnpm run build && pnpm run test"},"keywords":["wordpress","typescript","transpiler","plugin","php"],"license":"MIT","author":{"name":"Amit Gurbani"},"repository":{"type":"git","url":"git+https://github.com/AmitGurbani/wordpress-plugins.git","directory":"packages/wpts"},"homepage":"https://github.com/AmitGurbani/wordpress-plugins/tree/main/packages/wpts#readme","bugs":{"url":"https://github.com/AmitGurbani/wordpress-plugins/issues"},"engines":{"node":">=22.0.0"},"dependencies":{"archiver":"^7.0.1","chalk":"^5.6.2","chokidar":"^5.0.0","commander":"^14.0.3","fs-extra":"^11.3.0","handlebars":"^4.7.8","typescript":"^5.9.3"},"devDependencies":{"@types/archiver":"^7.0.0","@types/fs-extra":"^11.0.4","@types/node":"^25.3.0","@types/react":"^19.2.14","vitest":"^4.0.18"},"gitHead":"4a0f62c98df499c60524fd04ce5d443bd04621c9","_id":"@amitgurbani/wpts@0.3.0","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-xmoQM6W6RH3Ng7NI7Eg+kAKGQC/6oflY33OUyu/j/b9okqur4RBKP0rjxUEGiqyaejF/JTCDCzELzTwVwHiC4Q==","shasum":"25640bb0f11cb2de3c91311b20f8015565b55513","tarball":"https://registry.npmjs.org/@amitgurbani/wpts/-/wpts-0.3.0.tgz","fileCount":159,"unpackedSize":405488,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amitgurbani%2fwpts@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICUz0bi1HF55/fnHSexHuU7JlpkJKIeEkOdrljPc1wavAiEAoYCiAOtQZtKlPLGlUIySyME68A5RIlipm5HkZHz4CqQ="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87ad8396-339d-4806-88e0-bdc730b222e8"}},"directories":{},"maintainers":[{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wpts_0.3.0_1777969858394_0.517504304953867"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-22T11:33:19.892Z","modified":"2026-05-05T08:30:58.843Z","0.1.0":"2026-04-22T11:33:20.205Z","0.1.1":"2026-04-22T12:21:12.079Z","0.1.2":"2026-04-22T18:54:37.124Z","0.1.3":"2026-04-24T17:40:42.664Z","0.1.4":"2026-04-25T07:45:47.983Z","0.2.0":"2026-04-29T13:13:55.794Z","0.3.0":"2026-05-05T08:30:58.564Z"},"bugs":{"url":"https://github.com/AmitGurbani/wordpress-plugins/issues"},"author":{"name":"Amit Gurbani"},"license":"MIT","homepage":"https://github.com/AmitGurbani/wordpress-plugins/tree/main/packages/wpts#readme","keywords":["wordpress","typescript","transpiler","plugin","php"],"repository":{"type":"git","url":"git+https://github.com/AmitGurbani/wordpress-plugins.git","directory":"packages/wpts"},"description":"TypeScript-to-WordPress-Plugin transpiler","maintainers":[{"name":"amitgurbani","email":"amit1994.gurbani@gmail.com"}],"readme":"# wpts\n\nWrite WordPress plugins in TypeScript. wpts transpiles your decorator-annotated TypeScript into a complete, installable WordPress plugin with PHP backend, React admin pages, auto-generated REST API, and full plugin boilerplate.\n\n**Requires Node.js >= 20**\n\n## Quick Start\n\n```bash\n# Scaffold a new plugin project\nnpx wpts init my-plugin --name \"My Plugin\" --slug my-plugin\n\n# Build the plugin\ncd my-plugin\nnpx wpts build\n\n# Output is in dist/my-plugin/ — copy to wp-content/plugins/\n```\n\nThe generated plugin includes:\n\n```\nmy-plugin/\n├── my-plugin.php              # Plugin entry with header\n├── includes/\n│   ├── class-my-plugin.php    # Main orchestrator\n│   ├── class-my-plugin-loader.php\n│   ├── class-my-plugin-activator.php\n│   ├── class-my-plugin-deactivator.php\n│   └── class-my-plugin-rest-api.php   # Auto-generated from @Setting / @RestRoute\n├── admin/\n│   ├── class-my-plugin-admin.php\n│   └── js/                    # React admin UI\n│       ├── src/               # Your admin/*.tsx files (copied)\n│       └── package.json       # wp-scripts build config\n├── public/\n│   └── class-my-plugin-public.php\n├── uninstall.php\n└── readme.txt\n```\n\nThe React admin UI is **auto-built** during `wpts build` when `@AdminPage` is used. For development mode with hot reload, run `pnpm run start` inside `admin/js/`.\n\n## How It Works\n\nYou write two types of files:\n\n1. **`src/plugin.ts`** — Plugin backend logic with decorators. Transpiled to PHP.\n2. **`src/admin/index.tsx`** — Admin page UI in React. Bundled with `@wordpress/scripts`.\n\nThe `@Setting` decorators automatically generate a REST API endpoint (`/your-plugin/v1/settings`) so your React admin page can read and write settings without any manual REST API code.\n\n## Documentation\n\n- **[CLI Reference](docs/cli-reference.md)** — `init`, `build`, `validate`, `watch` commands and `wpts.config.json` configuration\n- **[Decorator API](docs/decorator-api.md)** — All 15 decorators: @Plugin, @Setting, @Action, @Filter, @AdminPage, @CustomPostType, @CustomTaxonomy, @RestRoute, @AjaxHandler, @Shortcode, @Activate, @Deactivate, @Uninstall, @DiagnosticsRoute, and helper methods\n- **[Admin Pages](docs/admin-pages.md)** — React admin UI pattern, admin-ui components, development mode\n- **[Transpilation](docs/transpilation.md)** — TypeScript to PHP rules, supported constructs, 680+ WordPress/WooCommerce/PHP functions, JavaScript method mappings\n\n## Multi-File Plugins\n\nSplit large plugins across multiple TypeScript files. Use standard `import` statements — the transpiler resolves all imported files and merges decorators from every file into a single plugin.\n\n```\nsrc/\n├── plugin.ts          # Entry file with @Plugin decorator\n├── routes.ts          # REST routes (@RestRoute)\n├── hooks.ts           # Actions and filters (@Action, @Filter)\n└── admin/index.tsx    # React admin UI (not transpiled)\n```\n\n**Entry file** (`plugin.ts`): Must contain exactly one `@Plugin` decorator. Import other files:\n\n```typescript\nimport './routes.js';\nimport './hooks.js';\n\n@Plugin({ name: 'My Plugin', ... })\nclass MyPlugin {\n  @Setting({ key: 'api_key', type: 'string', default: '', label: 'API Key' })\n  apiKey: string = '';\n}\n```\n\n**Other files** (`routes.ts`): Contain decorated classes — no `@Plugin` needed:\n\n```typescript\n@RestRoute('/items', { method: 'GET', capability: 'read' })\nlistItems(request: any): any {\n  return getPosts({ post_type: 'item' });\n}\n```\n\nAll decorators (`@Action`, `@Filter`, `@Setting`, `@RestRoute`, `@AjaxHandler`, etc.) work in any file. The transpiler merges everything into the same generated plugin output.\n\n> See [`headless-auth`](../headless-auth/) for a real-world example using multi-file structure.\n\n## Examples\n\nSee the `examples/` directory:\n\n- **`hello-world/`** — Simple plugin with one admin page, two settings, action, filter, and shortcode.\n- **`settings-demo/`** — Advanced example with 5 setting types, multiple admin pages (main page + sub-page), tabbed React UI.\n\nBuild an example:\n\n```bash\nnpx wpts build examples/hello-world/src/plugin.ts -o /tmp/hello-world --clean\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}