pressship 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.claude/skills/wordpress-plugin-publish/SKILL.md +153 -0
  2. package/README.md +285 -280
  3. package/assets/logo-new.png +0 -0
  4. package/assets/pressship-dark.png +0 -0
  5. package/assets/pressship-square-dark.png +0 -0
  6. package/assets/pressship-square.png +0 -0
  7. package/assets/pressship-symbol-dark.png +0 -0
  8. package/assets/pressship-symbol.png +0 -0
  9. package/assets/pressship-wordmark-dark.png +0 -0
  10. package/assets/pressship-wordmark.png +0 -0
  11. package/assets/pressship.png +0 -0
  12. package/dist/cli.js +40 -2
  13. package/dist/cli.js.map +1 -1
  14. package/dist/package/ignore.js +2 -0
  15. package/dist/package/ignore.js.map +1 -1
  16. package/dist/plugin/demo.d.ts +44 -0
  17. package/dist/plugin/demo.js +207 -0
  18. package/dist/plugin/demo.js.map +1 -0
  19. package/dist/plugin/info.d.ts +84 -0
  20. package/dist/plugin/info.js +209 -0
  21. package/dist/plugin/info.js.map +1 -0
  22. package/dist/plugin/list.d.ts +24 -0
  23. package/dist/plugin/list.js +174 -0
  24. package/dist/plugin/list.js.map +1 -0
  25. package/dist/svn/credentials.d.ts +9 -0
  26. package/dist/svn/credentials.js +94 -0
  27. package/dist/svn/credentials.js.map +1 -0
  28. package/dist/svn/get.d.ts +45 -0
  29. package/dist/svn/get.js +139 -0
  30. package/dist/svn/get.js.map +1 -0
  31. package/dist/svn/release.d.ts +1 -0
  32. package/dist/svn/release.js +90 -13
  33. package/dist/svn/release.js.map +1 -1
  34. package/dist/svn/subversion.d.ts +18 -0
  35. package/dist/svn/subversion.js +171 -0
  36. package/dist/svn/subversion.js.map +1 -0
  37. package/dist/utils/paths.d.ts +1 -0
  38. package/dist/utils/paths.js +3 -0
  39. package/dist/utils/paths.js.map +1 -1
  40. package/dist/wordpress-org/publish.d.ts +1 -0
  41. package/dist/wordpress-org/publish.js +4 -2
  42. package/dist/wordpress-org/publish.js.map +1 -1
  43. package/package.json +6 -1
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/dist/cli.js CHANGED
@@ -7,7 +7,11 @@ import { pack } from "./package/pack.js";
7
7
  import { publish } from "./wordpress-org/publish.js";
8
8
  import { submit } from "./wordpress-org/submit.js";
9
9
  import { status } from "./wordpress-org/state.js";
10
+ import { getPlugin } from "./svn/get.js";
10
11
  import { release } from "./svn/release.js";
12
+ import { demo } from "./plugin/demo.js";
13
+ import { info } from "./plugin/info.js";
14
+ import { listPlugins } from "./plugin/list.js";
11
15
  import { version } from "./plugin/version.js";
12
16
  const program = new Command();
13
17
  program
@@ -27,6 +31,38 @@ program
27
31
  .description("Print the WordPress.org username for the saved login session.")
28
32
  .option("--json", "Print account details as JSON")
29
33
  .action((options) => run(() => whoami(options))());
34
+ program
35
+ .command("demo")
36
+ .description("Start a local WordPress Playground demo for a plugin path or WordPress.org slug.")
37
+ .argument("[slug-or-path]", "Local plugin path, WordPress.org plugin slug, or plugin URL")
38
+ .option("--port <port>", "Port for the local Playground server")
39
+ .option("--wp <version>", "WordPress version to use")
40
+ .option("--php <version>", "PHP version to use")
41
+ .option("--reset", "Reset the persisted Playground site before starting")
42
+ .option("--skip-browser", "Start the local server without opening a browser")
43
+ .action((target, options) => run(() => demo(target, options))());
44
+ program
45
+ .command("info")
46
+ .description("Show detailed info for a local plugin path or WordPress.org plugin slug.")
47
+ .argument("[slug-or-path]", "Local plugin path, WordPress.org plugin slug, or plugin URL")
48
+ .option("--json", "Print plugin info as JSON")
49
+ .action((target, options) => run(() => info(target, options))());
50
+ program
51
+ .command("ls")
52
+ .alias("list")
53
+ .description("List WordPress.org plugins for the saved account or a public profile username.")
54
+ .argument("[username]", "WordPress.org username. Defaults to the saved login user.")
55
+ .option("--public", "Use the public author archive even for the saved login user")
56
+ .option("--json", "Print plugin list as JSON")
57
+ .action((username, options) => run(() => listPlugins(username, options))());
58
+ program
59
+ .command("get")
60
+ .description("Checkout or update a WordPress.org plugin SVN repository.")
61
+ .argument("<slug>", "WordPress.org plugin slug or plugin URL")
62
+ .argument("[path]", "Destination directory. Defaults to ./<slug>.")
63
+ .option("--json", "Print checkout details as JSON")
64
+ .option("--no-install-svn", "Do not try to install Subversion automatically when svn is missing")
65
+ .action((slug, destination, options) => run(() => getPlugin(slug, destination, options))());
30
66
  program
31
67
  .command("publish")
32
68
  .description("Submit for review or release an approved plugin, similar to npm publish.")
@@ -41,8 +77,9 @@ program
41
77
  .option("--slug <slug>", "Approved WordPress.org plugin slug for release detection or release")
42
78
  .option("--version <version>", "Version tag to create for release")
43
79
  .option("--svn-dir <path>", "Local SVN working copy directory for release")
44
- .option("--username <username>", "WordPress.org SVN username for release")
80
+ .option("--username <username>", "WordPress.org SVN username for release; defaults to the saved login user")
45
81
  .option("-m, --message <message>", "SVN commit message for release")
82
+ .option("--no-install-svn", "Do not try to install Subversion automatically when svn is missing")
46
83
  .option("--ignore <glob>", "Ignore files in the package; repeat for multiple globs", collectValues, [])
47
84
  .option("-y, --yes", "Continue without interactive confirmations where possible")
48
85
  .action((pluginPath, options) => run(() => publish(pluginPath, options))());
@@ -88,11 +125,12 @@ program
88
125
  .option("--slug <slug>", "Approved WordPress.org plugin slug")
89
126
  .option("--version <version>", "Version tag to create")
90
127
  .option("--svn-dir <path>", "Local SVN working copy directory")
91
- .option("--username <username>", "WordPress.org SVN username")
128
+ .option("--username <username>", "WordPress.org SVN username; defaults to the saved login user")
92
129
  .option("-m, --message <message>", "SVN commit message")
93
130
  .option("--ignore <glob>", "Ignore files in the SVN release; repeat for multiple globs", collectValues, [])
94
131
  .option("--dry-run", "Print the SVN command plan without changing SVN")
95
132
  .option("-y, --yes", "Commit without the final confirmation prompt")
133
+ .option("--no-install-svn", "Do not try to install Subversion automatically when svn is missing")
96
134
  .action((pluginPath, options) => run(() => release(pluginPath, options))());
97
135
  await program.parseAsync(process.argv);
98
136
  function run(action) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export const defaultIgnorePatterns = [
9
9
  ".gitignore",
10
10
  ".github",
11
11
  ".github/**",
12
+ ".wordpress-org",
13
+ ".wordpress-org/**",
12
14
  ".idea",
13
15
  ".idea/**",
14
16
  ".vscode",
@@ -1 +1 @@
1
- {"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/package/ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW;IACX,MAAM;IACN,SAAS;IACT,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,OAAO;IACP,UAAU;IACV,SAAS;IACT,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,cAAc;IACd,iBAAiB;IACjB,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,UAAU;IACV,aAAa;IACb,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;IACP,kBAAkB;IAClB,kBAAkB;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,gBAA0B,EAAE;IACpF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,YAAoB,EAAW,EAAE;QACvC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/package/ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW;IACX,MAAM;IACN,SAAS;IACT,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,SAAS;IACT,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,cAAc;IACd,iBAAiB;IACjB,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,UAAU;IACV,aAAa;IACb,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;IACP,kBAAkB;IAClB,kBAAkB;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,gBAA0B,EAAE;IACpF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,YAAoB,EAAW,EAAE;QACvC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import type { PluginProject } from "../types.js";
3
+ declare const demoOptionsSchema: z.ZodObject<{
4
+ port: z.ZodOptional<z.ZodString>;
5
+ wp: z.ZodOptional<z.ZodString>;
6
+ php: z.ZodOptional<z.ZodString>;
7
+ reset: z.ZodDefault<z.ZodBoolean>;
8
+ skipBrowser: z.ZodDefault<z.ZodBoolean>;
9
+ }, z.core.$strip>;
10
+ export type DemoOptions = z.input<typeof demoOptionsSchema>;
11
+ export type PlaygroundBlueprint = {
12
+ landingPage: string;
13
+ steps: Array<Record<string, unknown>>;
14
+ };
15
+ export type DemoLaunchPlan = {
16
+ source: "local" | "wordpress.org";
17
+ name: string;
18
+ slug: string;
19
+ command: string;
20
+ args: string[];
21
+ cwd: string;
22
+ blueprintPath: string;
23
+ siteDir: string;
24
+ wpVersion?: string;
25
+ phpVersion?: string;
26
+ url?: string;
27
+ };
28
+ export declare function demo(target: string | undefined, rawOptions?: DemoOptions): Promise<void>;
29
+ export declare function createDemoLaunchPlan(target: string | undefined, options: z.infer<typeof demoOptionsSchema>): Promise<DemoLaunchPlan>;
30
+ export declare function createLocalDemoBlueprint(project: PluginProject): PlaygroundBlueprint;
31
+ export declare function createHostedDemoBlueprint(slug: string): PlaygroundBlueprint;
32
+ export declare function createPlaygroundCompatibilitySteps(): Array<Record<string, unknown>>;
33
+ export declare function createPlaygroundStartArgs(input: {
34
+ path: string;
35
+ blueprintPath: string;
36
+ mount?: string;
37
+ options: z.infer<typeof demoOptionsSchema>;
38
+ }): string[];
39
+ export declare function resolveDemoPlaygroundOptions(options: z.infer<typeof demoOptionsSchema>, requiredVersions: {
40
+ wp?: unknown;
41
+ php?: unknown;
42
+ }): z.infer<typeof demoOptionsSchema>;
43
+ export declare function getPlaygroundSiteDir(projectPath: string): string;
44
+ export {};
@@ -0,0 +1,207 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, rm, writeFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import path from "node:path";
5
+ import { execa } from "execa";
6
+ import { z } from "zod";
7
+ import { discoverPluginProject } from "./discover.js";
8
+ import { fetchHostedPluginInfo, slugFromHostedTarget } from "./info.js";
9
+ import { ui } from "../ui.js";
10
+ import { ensureCacheDir, pathExists } from "../utils/paths.js";
11
+ const playgroundCliPackage = "@wp-playground/cli@latest";
12
+ const compatibilityMuPluginPath = "/wordpress/wp-content/mu-plugins/pressship-playground-compat.php";
13
+ const compatibilityMuPlugin = `<?php
14
+ error_reporting(error_reporting() & ~E_DEPRECATED & ~E_USER_DEPRECATED);
15
+ set_error_handler(static function (int $severity): bool {
16
+ return $severity === E_DEPRECATED || $severity === E_USER_DEPRECATED;
17
+ });
18
+
19
+ if (! function_exists('is_plugin_active')) {
20
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
21
+ }
22
+ `;
23
+ const demoOptionsSchema = z.object({
24
+ port: z.string().optional(),
25
+ wp: z.string().optional(),
26
+ php: z.string().optional(),
27
+ reset: z.boolean().default(false),
28
+ skipBrowser: z.boolean().default(false)
29
+ });
30
+ export async function demo(target, rawOptions = {}) {
31
+ const options = demoOptionsSchema.parse(rawOptions);
32
+ ui.intro("Start plugin demo");
33
+ const plan = await ui.task("Preparing Playground demo", () => createDemoLaunchPlan(target, options), (value) => `Prepared ${value.name}`);
34
+ ui.section("Playground");
35
+ ui.keyValue("Plugin", plan.name);
36
+ ui.keyValue("Source", plan.source);
37
+ ui.keyValue("Slug", plan.slug);
38
+ ui.keyValue("WordPress", plan.wpVersion ?? "default");
39
+ ui.keyValue("PHP", plan.phpVersion ?? "default");
40
+ ui.keyValue("Site", ui.path(plan.siteDir));
41
+ if (plan.url) {
42
+ ui.keyValue("URL", ui.path(plan.url));
43
+ }
44
+ ui.keyValue("Blueprint", ui.path(plan.blueprintPath));
45
+ if (options.reset) {
46
+ await ui.task("Resetting persisted Playground site", () => resetPlaygroundSite(plan.siteDir), () => "Reset complete");
47
+ }
48
+ ui.info("Starting WordPress Playground. Press Ctrl+C to stop the local server.");
49
+ await execa(plan.command, plan.args, {
50
+ cwd: plan.cwd,
51
+ stdio: "inherit"
52
+ });
53
+ }
54
+ export async function createDemoLaunchPlan(target, options) {
55
+ const resolvedTarget = target ?? process.cwd();
56
+ if (isLocalPluginTarget(resolvedTarget)) {
57
+ const project = await discoverPluginProject(resolvedTarget);
58
+ const blueprintPath = await writeDemoBlueprint(project.slug, createLocalDemoBlueprint(project));
59
+ const playgroundOptions = resolveDemoPlaygroundOptions(options, {
60
+ wp: project.headers.requiresAtLeast ?? project.readme?.requiresAtLeast,
61
+ php: project.headers.requiresPhp ?? project.readme?.requiresPhp
62
+ });
63
+ const url = options.port ? `http://127.0.0.1:${options.port}` : undefined;
64
+ return {
65
+ source: "local",
66
+ name: project.headers.pluginName,
67
+ slug: project.slug,
68
+ command: "npx",
69
+ args: createPlaygroundStartArgs({
70
+ path: project.rootDir,
71
+ blueprintPath,
72
+ mount: `${project.rootDir}:/wordpress/wp-content/plugins/${project.slug}`,
73
+ options: playgroundOptions
74
+ }),
75
+ cwd: project.rootDir,
76
+ blueprintPath,
77
+ siteDir: getPlaygroundSiteDir(project.rootDir),
78
+ wpVersion: playgroundOptions.wp,
79
+ phpVersion: playgroundOptions.php,
80
+ url
81
+ };
82
+ }
83
+ const slug = slugFromHostedTarget(resolvedTarget);
84
+ const plugin = await fetchHostedPluginInfo(slug);
85
+ const blueprintPath = await writeDemoBlueprint(slug, createHostedDemoBlueprint(slug));
86
+ const demoDir = path.dirname(blueprintPath);
87
+ const playgroundOptions = resolveDemoPlaygroundOptions(options, {
88
+ wp: plugin.requires,
89
+ php: plugin.requiresPhp
90
+ });
91
+ const url = options.port ? `http://127.0.0.1:${options.port}` : undefined;
92
+ return {
93
+ source: "wordpress.org",
94
+ name: plugin.name,
95
+ slug,
96
+ command: "npx",
97
+ args: createPlaygroundStartArgs({
98
+ path: demoDir,
99
+ blueprintPath,
100
+ options: playgroundOptions
101
+ }),
102
+ cwd: demoDir,
103
+ blueprintPath,
104
+ siteDir: getPlaygroundSiteDir(demoDir),
105
+ wpVersion: playgroundOptions.wp,
106
+ phpVersion: playgroundOptions.php,
107
+ url
108
+ };
109
+ }
110
+ export function createLocalDemoBlueprint(project) {
111
+ const relativeMainFile = path.relative(project.rootDir, project.mainFile).split(path.sep).join("/");
112
+ return {
113
+ landingPage: "/wp-admin/plugins.php",
114
+ steps: [
115
+ ...createPlaygroundCompatibilitySteps(),
116
+ {
117
+ step: "activatePlugin",
118
+ pluginName: project.headers.pluginName,
119
+ pluginPath: `/wordpress/wp-content/plugins/${project.slug}/${relativeMainFile}`
120
+ }
121
+ ]
122
+ };
123
+ }
124
+ export function createHostedDemoBlueprint(slug) {
125
+ return {
126
+ landingPage: "/wp-admin/plugins.php",
127
+ steps: [
128
+ ...createPlaygroundCompatibilitySteps(),
129
+ {
130
+ step: "installPlugin",
131
+ pluginData: {
132
+ resource: "wordpress.org/plugins",
133
+ slug
134
+ },
135
+ options: {
136
+ activate: true
137
+ }
138
+ }
139
+ ]
140
+ };
141
+ }
142
+ export function createPlaygroundCompatibilitySteps() {
143
+ return [
144
+ {
145
+ step: "mkdir",
146
+ path: "/wordpress/wp-content/mu-plugins"
147
+ },
148
+ {
149
+ step: "writeFile",
150
+ path: compatibilityMuPluginPath,
151
+ data: compatibilityMuPlugin
152
+ }
153
+ ];
154
+ }
155
+ export function createPlaygroundStartArgs(input) {
156
+ return [
157
+ "--yes",
158
+ playgroundCliPackage,
159
+ "start",
160
+ `--path=${input.path}`,
161
+ `--blueprint=${input.blueprintPath}`,
162
+ "--define-bool",
163
+ "WP_DEBUG",
164
+ "false",
165
+ "--define-bool",
166
+ "WP_DEBUG_DISPLAY",
167
+ "false",
168
+ ...(input.mount ? ["--no-auto-mount", `--mount=${input.mount}`] : []),
169
+ ...(input.options.port ? [`--port=${input.options.port}`] : []),
170
+ ...(input.options.wp ? [`--wp=${input.options.wp}`] : []),
171
+ ...(input.options.php ? [`--php=${input.options.php}`] : []),
172
+ ...(input.options.skipBrowser ? ["--skip-browser"] : [])
173
+ ];
174
+ }
175
+ export function resolveDemoPlaygroundOptions(options, requiredVersions) {
176
+ return {
177
+ ...options,
178
+ wp: options.wp ?? normalizePlaygroundVersion(requiredVersions.wp),
179
+ php: options.php ?? normalizePlaygroundVersion(requiredVersions.php)
180
+ };
181
+ }
182
+ export function getPlaygroundSiteDir(projectPath) {
183
+ const siteId = createHash("sha256").update(projectPath).digest("hex");
184
+ return path.join(homedir(), ".wordpress-playground", "sites", siteId);
185
+ }
186
+ async function resetPlaygroundSite(siteDir) {
187
+ await rm(siteDir, { recursive: true, force: true });
188
+ }
189
+ async function writeDemoBlueprint(slug, blueprint) {
190
+ const cacheDir = await ensureCacheDir();
191
+ const demoDir = path.join(cacheDir, "demo", slug);
192
+ const blueprintPath = path.join(demoDir, "blueprint.json");
193
+ await mkdir(demoDir, { recursive: true, mode: 0o700 });
194
+ await writeFile(blueprintPath, `${JSON.stringify(blueprint, null, 2)}\n`);
195
+ return blueprintPath;
196
+ }
197
+ function isLocalPluginTarget(target) {
198
+ return target === "." || target.startsWith("..") || target.startsWith(`.${path.sep}`) || path.isAbsolute(target) || pathExists(target);
199
+ }
200
+ function normalizePlaygroundVersion(version) {
201
+ if (typeof version !== "string") {
202
+ return undefined;
203
+ }
204
+ const trimmed = version.trim();
205
+ return trimmed && trimmed !== "0" ? trimmed : undefined;
206
+ }
207
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/plugin/demo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { z } from "zod";
2
+ import type { PluginProject, ReadmeMetadata } from "../types.js";
3
+ declare const infoOptionsSchema: z.ZodObject<{
4
+ json: z.ZodDefault<z.ZodBoolean>;
5
+ }, z.core.$strip>;
6
+ export type InfoOptions = z.input<typeof infoOptionsSchema>;
7
+ export type LocalPluginInfo = {
8
+ source: "local";
9
+ rootDir: string;
10
+ mainFile: string;
11
+ readmePath?: string;
12
+ name: string;
13
+ slug: string;
14
+ version?: string;
15
+ description?: string;
16
+ author?: string;
17
+ pluginUri?: string;
18
+ authorUri?: string;
19
+ textDomain?: string;
20
+ domainPath?: string;
21
+ requiresAtLeast?: string;
22
+ requiresPhp?: string;
23
+ license?: string;
24
+ licenseUri?: string;
25
+ readme?: ReadmeMetadata;
26
+ };
27
+ export type HostedPluginInfo = {
28
+ source: "wordpress.org";
29
+ name: string;
30
+ slug: string;
31
+ version?: string;
32
+ author?: string;
33
+ authorProfile?: string;
34
+ homepage?: string;
35
+ pluginUrl: string;
36
+ downloadUrl?: string;
37
+ requires?: string;
38
+ tested?: string;
39
+ requiresPhp?: string;
40
+ activeInstalls?: number;
41
+ lastUpdated?: string;
42
+ added?: string;
43
+ rating?: number;
44
+ ratingPercent?: number;
45
+ ratingCount?: number;
46
+ supportThreads?: number;
47
+ supportThreadsResolved?: number;
48
+ tags: string[];
49
+ description?: string;
50
+ changelog?: string;
51
+ };
52
+ export type PluginInfo = LocalPluginInfo | HostedPluginInfo;
53
+ type PluginInfoApiResponse = {
54
+ error?: string;
55
+ name?: string;
56
+ slug?: string;
57
+ version?: string;
58
+ author?: string;
59
+ author_profile?: string;
60
+ requires?: string | boolean | null;
61
+ tested?: string;
62
+ requires_php?: string | boolean | null;
63
+ rating?: number;
64
+ num_ratings?: number;
65
+ support_threads?: number;
66
+ support_threads_resolved?: number;
67
+ active_installs?: number;
68
+ last_updated?: string;
69
+ added?: string;
70
+ homepage?: string;
71
+ sections?: {
72
+ description?: string;
73
+ changelog?: string;
74
+ };
75
+ download_link?: string;
76
+ tags?: Record<string, string> | string[];
77
+ };
78
+ export declare function info(target: string | undefined, rawOptions?: InfoOptions): Promise<void>;
79
+ export declare function getPluginInfo(target: string | undefined): Promise<PluginInfo>;
80
+ export declare function localPluginInfo(project: PluginProject): LocalPluginInfo;
81
+ export declare function fetchHostedPluginInfo(slug: string): Promise<HostedPluginInfo>;
82
+ export declare function hostedPluginInfoFromApi(body: PluginInfoApiResponse, fallbackSlug: string): HostedPluginInfo;
83
+ export declare function slugFromHostedTarget(target: string): string;
84
+ export {};