@bubblydoo/uxp-cli 0.0.2 → 0.0.3

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.
package/dist/bin.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import fs from 'fs/promises';
3
3
  import path from 'path';
4
4
  import { fileURLToPath } from 'url';
5
- import { setupDevtoolsUrl, setupCdpSession, waitForExecutionContextCreated, setupCdpSessionWithDefaults } from '@bubblydoo/uxp-cli-common';
5
+ import { setupDevtoolsConnection, setupCdpSession, waitForExecutionContextCreated, setupCdpSessionWithUxpDefaults } from '@bubblydoo/uxp-devtools-common';
6
6
  import arg from 'arg';
7
7
  import { spawn } from 'child_process';
8
8
 
@@ -53,7 +53,6 @@ Actions:
53
53
 
54
54
  Options:
55
55
  --plugin-path, -p <path> Path to the UXP plugin directory
56
- --plugin-id, -i <id> Plugin ID
57
56
  --help, -h Show this help message
58
57
 
59
58
  Examples:
@@ -61,7 +60,7 @@ Examples:
61
60
  uxp-cli open-devtools
62
61
 
63
62
  # Open devtools with custom plugin
64
- uxp-cli open-devtools --plugin-path ./my-plugin --plugin-id com.example.myplugin
63
+ uxp-cli open-devtools --plugin-path ./my-plugin
65
64
 
66
65
  # Dump object properties (always uses fake plugin)
67
66
  uxp-cli dump-object
@@ -86,10 +85,8 @@ if (!["open-devtools", "dump-object"].includes(action)) {
86
85
  }
87
86
  var actionArgs = arg({
88
87
  "--plugin-path": String,
89
- "--plugin-id": String,
90
88
  "--help": Boolean,
91
89
  "-p": "--plugin-path",
92
- "-i": "--plugin-id",
93
90
  "-h": "--help"
94
91
  }, {
95
92
  argv: args._.slice(1)
@@ -99,22 +96,17 @@ if (actionArgs["--help"]) {
99
96
  process.exit(0);
100
97
  }
101
98
  async function getPluginInfo(useFakePlugin) {
102
- const fakePluginPath = path.resolve(__dirname2, "../../uxp-cli-common/fake-plugin");
103
- const fakePluginId = "co.bubblydoo.fake-plugin";
99
+ const fakePluginPath = path.resolve(__dirname2, "../../uxp-devtools-common/fake-plugin");
104
100
  if (useFakePlugin) {
105
101
  console.log("Using fake plugin:");
106
102
  console.log(` Plugin Path: ${fakePluginPath}`);
107
- console.log(` Plugin ID: ${fakePluginId}`);
108
- return { pluginPath: fakePluginPath, pluginId: fakePluginId };
103
+ return { pluginPath: fakePluginPath };
109
104
  }
110
105
  let pluginPath = actionArgs["--plugin-path"];
111
- let pluginId = actionArgs["--plugin-id"];
112
- if (!pluginPath || !pluginId) {
106
+ if (!pluginPath) {
113
107
  pluginPath = pluginPath || fakePluginPath;
114
- pluginId = pluginId || fakePluginId;
115
108
  console.log("Using default fake plugin:");
116
109
  console.log(` Plugin Path: ${pluginPath}`);
117
- console.log(` Plugin ID: ${pluginId}`);
118
110
  }
119
111
  if (!path.isAbsolute(pluginPath)) {
120
112
  pluginPath = path.resolve(process.cwd(), pluginPath);
@@ -125,32 +117,32 @@ async function getPluginInfo(useFakePlugin) {
125
117
  console.error(`Error: Plugin directory not found: ${pluginPath}`);
126
118
  process.exit(1);
127
119
  }
128
- return { pluginPath, pluginId };
120
+ const manifest = JSON.parse(await fs.readFile(path.resolve(pluginPath, "manifest.json"), "utf8"));
121
+ return { pluginPath, pluginId: manifest.id };
129
122
  }
130
123
  async function openDevtools() {
131
- const { pluginPath, pluginId } = await getPluginInfo(false);
124
+ const { pluginPath } = await getPluginInfo(false);
132
125
  console.log("\nSetting up devtools URL...");
133
- const cdtUrl = await setupDevtoolsUrl(pluginPath, pluginId);
134
- console.log(`DevTools URL: ${cdtUrl}
126
+ const devtoolsConnection = await setupDevtoolsConnection(pluginPath);
127
+ console.log(`DevTools URL: ${devtoolsConnection.url}
135
128
  `);
136
- await openDevtoolsSessionInChrome(cdtUrl);
129
+ await openDevtoolsSessionInChrome(devtoolsConnection.url);
137
130
  console.log("Chrome DevTools opened");
138
131
  console.log("\nPress Ctrl+C to exit...");
139
132
  await new Promise(() => {
140
133
  });
141
134
  }
142
135
  async function dumpObject() {
143
- const { pluginPath, pluginId } = await getPluginInfo(true);
136
+ const { pluginPath } = await getPluginInfo(true);
144
137
  console.log("\nSetting up devtools URL...");
145
- const cdtUrl = await setupDevtoolsUrl(pluginPath, pluginId);
146
- console.log(`DevTools URL: ${cdtUrl}
138
+ const devtoolsConnection = await setupDevtoolsConnection(pluginPath);
139
+ console.log(`DevTools URL: ${devtoolsConnection.url}
147
140
  `);
148
141
  console.log("Setting up CDP session...");
149
- const cdp = await setupCdpSession(cdtUrl);
150
- const executionContextCreatedPromise = waitForExecutionContextCreated(cdp);
151
- await setupCdpSessionWithDefaults(cdp);
152
- console.log("Waiting for execution context...");
153
- const executionContext = await executionContextCreatedPromise;
142
+ const cdp = await setupCdpSession(devtoolsConnection.url);
143
+ const executionContext = await waitForExecutionContextCreated(cdp, async () => {
144
+ await setupCdpSessionWithUxpDefaults(cdp);
145
+ });
154
146
  console.log("Evaluating expression...");
155
147
  const result = await cdp.Runtime.evaluate({
156
148
  expression: `
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/open-devtools-session.ts","../src/bin.ts"],"names":["args","__dirname"],"mappings":"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","file":"bin.js","sourcesContent":["import { spawn } from 'node:child_process';\n\n// devtools://devtools/bundled/inspector.html?ws=127.0.0.1:14003/socket/cdt/2676d6dd-528c-4453-ac0d-c5dddf78c4d7\n\nfunction getChromeCommand(): { command: string; args: string[] } {\n const platform = process.platform;\n\n switch (platform) {\n case 'darwin':\n return { command: 'open', args: ['-a', 'Google Chrome'] };\n case 'win32':\n return { command: 'cmd', args: ['/c', 'start', 'chrome'] };\n case 'linux':\n // Try common Chrome executable names on Linux\n return { command: 'google-chrome', args: [] };\n default:\n throw new Error(`Unsupported platform: ${platform}`);\n }\n}\n\nexport function openDevtoolsSessionInChrome(cdtUrl: string) {\n const url = new URL('devtools://devtools/bundled/inspector.html');\n url.searchParams.set('ws', cdtUrl.replace('ws://', ''));\n\n return new Promise((resolve, reject) => {\n const { command, args } = getChromeCommand();\n const proc = spawn(command, [...args, url.toString()], {\n shell: process.platform === 'win32',\n });\n proc.on('error', (err) => {\n reject(new Error(`Failed to launch Chrome: ${err.message}`));\n });\n proc.on('close', (code) => {\n if (code === 0) {\n resolve(true);\n }\n else {\n reject(new Error('Failed to open devtools session'));\n }\n });\n });\n}\n","#!/usr/bin/env node\n/* eslint-disable antfu/no-top-level-await */\n/* eslint-disable no-console */\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { setupCdpSession, setupCdpSessionWithDefaults, setupDevtoolsUrl, waitForExecutionContextCreated } from '@bubblydoo/uxp-cli-common';\nimport arg from 'arg';\nimport { openDevtoolsSessionInChrome } from './open-devtools-session';\n\nError.stackTraceLimit = Infinity;\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nfunction showHelp() {\n console.log(`\nUsage: uxp-cli <action> [options]\n\nActions:\n open-devtools Open Chrome DevTools for a UXP plugin\n dump-object Dump object properties to dump.json (always uses fake plugin)\n\nOptions:\n --plugin-path, -p <path> Path to the UXP plugin directory\n --plugin-id, -i <id> Plugin ID\n --help, -h Show this help message\n\nExamples:\n # Open devtools with fake plugin\n uxp-cli open-devtools\n\n # Open devtools with custom plugin\n uxp-cli open-devtools --plugin-path ./my-plugin --plugin-id com.example.myplugin\n\n # Dump object properties (always uses fake plugin)\n uxp-cli dump-object\n`);\n}\n\n// Parse action\nconst args = arg({\n '--help': Boolean,\n '-h': '--help',\n}, {\n permissive: true,\n});\n\nif (args['--help'] || args._.length === 0) {\n showHelp();\n process.exit(args['--help'] ? 0 : 1);\n}\n\nconst action = args._[0];\n\nif (!['open-devtools', 'dump-object'].includes(action)) {\n console.error(`Error: Unknown action \"${action}\"\\n`);\n showHelp();\n process.exit(1);\n}\n\n// Parse action-specific options\nconst actionArgs = arg({\n '--plugin-path': String,\n '--plugin-id': String,\n '--help': Boolean,\n '-p': '--plugin-path',\n '-i': '--plugin-id',\n '-h': '--help',\n}, {\n argv: args._.slice(1),\n});\n\nif (actionArgs['--help']) {\n showHelp();\n process.exit(0);\n}\n\nasync function getPluginInfo(useFakePlugin: boolean) {\n const fakePluginPath = path.resolve(__dirname, '../../uxp-cli-common/fake-plugin');\n const fakePluginId = 'co.bubblydoo.fake-plugin';\n\n if (useFakePlugin) {\n console.log('Using fake plugin:');\n console.log(` Plugin Path: ${fakePluginPath}`);\n console.log(` Plugin ID: ${fakePluginId}`);\n return { pluginPath: fakePluginPath, pluginId: fakePluginId };\n }\n\n let pluginPath = actionArgs['--plugin-path'];\n let pluginId = actionArgs['--plugin-id'];\n\n // Default to fake-plugin if not provided\n if (!pluginPath || !pluginId) {\n pluginPath = pluginPath || fakePluginPath;\n pluginId = pluginId || fakePluginId;\n\n console.log('Using default fake plugin:');\n console.log(` Plugin Path: ${pluginPath}`);\n console.log(` Plugin ID: ${pluginId}`);\n }\n\n // Ensure plugin path is absolute\n if (!path.isAbsolute(pluginPath)) {\n pluginPath = path.resolve(process.cwd(), pluginPath);\n }\n\n // Verify plugin directory exists\n try {\n await fs.access(pluginPath);\n }\n catch {\n console.error(`Error: Plugin directory not found: ${pluginPath}`);\n process.exit(1);\n }\n\n return { pluginPath, pluginId };\n}\n\nasync function openDevtools() {\n const { pluginPath, pluginId } = await getPluginInfo(false);\n\n console.log('\\nSetting up devtools URL...');\n const cdtUrl = await setupDevtoolsUrl(pluginPath, pluginId);\n console.log(`DevTools URL: ${cdtUrl}\\n`);\n\n await openDevtoolsSessionInChrome(cdtUrl);\n console.log('Chrome DevTools opened');\n\n console.log('\\nPress Ctrl+C to exit...');\n await new Promise(() => {});\n}\n\nasync function dumpObject() {\n const { pluginPath, pluginId } = await getPluginInfo(true);\n\n console.log('\\nSetting up devtools URL...');\n const cdtUrl = await setupDevtoolsUrl(pluginPath, pluginId);\n console.log(`DevTools URL: ${cdtUrl}\\n`);\n\n console.log('Setting up CDP session...');\n const cdp = await setupCdpSession(cdtUrl);\n\n const executionContextCreatedPromise = waitForExecutionContextCreated(cdp);\n\n await setupCdpSessionWithDefaults(cdp);\n\n console.log('Waiting for execution context...');\n const executionContext = await executionContextCreatedPromise;\n\n console.log('Evaluating expression...');\n const result = await cdp.Runtime.evaluate({\n expression: `\n (() => {\n const app = require(\"photoshop\").app;\n const activeDocumentGetter = Object.getOwnPropertyDescriptor(Reflect.getPrototypeOf(app), \"activeDocument\").get;\n return activeDocumentGetter;\n })();\n `,\n uniqueContextId: executionContext.uniqueId,\n });\n\n console.log('Getting properties...');\n const properties = await cdp.Runtime.getProperties({\n objectId: result.result.objectId!,\n accessorPropertiesOnly: false,\n generatePreview: false,\n nonIndexedPropertiesOnly: false,\n ownProperties: false,\n });\n\n const _functionLocation = properties.internalProperties?.find((property: any) => property.name === '[[FunctionLocation]]')?.value;\n const scopes = properties.internalProperties?.find((property: any) => property.name === '[[Scopes]]')?.value;\n\n const scopesProperties = await cdp.Runtime.getProperties({\n objectId: scopes!.objectId!,\n ownProperties: true,\n });\n\n const allScopesResolved = await Promise.all(\n scopesProperties.result.map((property: any) => cdp.Runtime.getProperties({\n objectId: property.value!.objectId!,\n ownProperties: true,\n })),\n );\n\n const dump = {\n subject: result.result,\n properties,\n scopes: allScopesResolved,\n };\n\n const dumpPath = path.resolve(process.cwd(), 'dump.json');\n await fs.writeFile(dumpPath, JSON.stringify(dump, null, 2));\n console.log(`\\nDump written to: ${dumpPath}`);\n}\n\n// Handle actions\nif (action === 'open-devtools') {\n await openDevtools();\n}\nelse if (action === 'dump-object') {\n await dumpObject();\n}\n\nprocess.on('SIGINT', () => {\n console.log('\\nReceived SIGINT, exiting...');\n process.exit(0);\n});\n"]}
1
+ {"version":3,"sources":["../src/open-devtools-session.ts","../src/bin.ts"],"names":["args","__dirname"],"mappings":"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","file":"bin.js","sourcesContent":["import { spawn } from 'node:child_process';\n\n// devtools://devtools/bundled/inspector.html?ws=127.0.0.1:14003/socket/cdt/2676d6dd-528c-4453-ac0d-c5dddf78c4d7\n\nfunction getChromeCommand(): { command: string; args: string[] } {\n const platform = process.platform;\n\n switch (platform) {\n case 'darwin':\n return { command: 'open', args: ['-a', 'Google Chrome'] };\n case 'win32':\n return { command: 'cmd', args: ['/c', 'start', 'chrome'] };\n case 'linux':\n // Try common Chrome executable names on Linux\n return { command: 'google-chrome', args: [] };\n default:\n throw new Error(`Unsupported platform: ${platform}`);\n }\n}\n\nexport function openDevtoolsSessionInChrome(cdtUrl: string) {\n const url = new URL('devtools://devtools/bundled/inspector.html');\n url.searchParams.set('ws', cdtUrl.replace('ws://', ''));\n\n return new Promise((resolve, reject) => {\n const { command, args } = getChromeCommand();\n const proc = spawn(command, [...args, url.toString()], {\n shell: process.platform === 'win32',\n });\n proc.on('error', (err) => {\n reject(new Error(`Failed to launch Chrome: ${err.message}`));\n });\n proc.on('close', (code) => {\n if (code === 0) {\n resolve(true);\n }\n else {\n reject(new Error('Failed to open devtools session'));\n }\n });\n });\n}\n","#!/usr/bin/env node\n/* eslint-disable antfu/no-top-level-await */\n/* eslint-disable no-console */\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { setupCdpSession, setupCdpSessionWithUxpDefaults, setupDevtoolsConnection, waitForExecutionContextCreated } from '@bubblydoo/uxp-devtools-common';\nimport arg from 'arg';\nimport { openDevtoolsSessionInChrome } from './open-devtools-session';\n\nError.stackTraceLimit = Infinity;\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nfunction showHelp() {\n console.log(`\nUsage: uxp-cli <action> [options]\n\nActions:\n open-devtools Open Chrome DevTools for a UXP plugin\n dump-object Dump object properties to dump.json (always uses fake plugin)\n\nOptions:\n --plugin-path, -p <path> Path to the UXP plugin directory\n --help, -h Show this help message\n\nExamples:\n # Open devtools with fake plugin\n uxp-cli open-devtools\n\n # Open devtools with custom plugin\n uxp-cli open-devtools --plugin-path ./my-plugin\n\n # Dump object properties (always uses fake plugin)\n uxp-cli dump-object\n`);\n}\n\n// Parse action\nconst args = arg({\n '--help': Boolean,\n '-h': '--help',\n}, {\n permissive: true,\n});\n\nif (args['--help'] || args._.length === 0) {\n showHelp();\n process.exit(args['--help'] ? 0 : 1);\n}\n\nconst action = args._[0];\n\nif (!['open-devtools', 'dump-object'].includes(action)) {\n console.error(`Error: Unknown action \"${action}\"\\n`);\n showHelp();\n process.exit(1);\n}\n\n// Parse action-specific options\nconst actionArgs = arg({\n '--plugin-path': String,\n '--help': Boolean,\n '-p': '--plugin-path',\n '-h': '--help',\n}, {\n argv: args._.slice(1),\n});\n\nif (actionArgs['--help']) {\n showHelp();\n process.exit(0);\n}\n\nasync function getPluginInfo(useFakePlugin: boolean) {\n const fakePluginPath = path.resolve(__dirname, '../../uxp-devtools-common/fake-plugin');\n\n if (useFakePlugin) {\n console.log('Using fake plugin:');\n console.log(` Plugin Path: ${fakePluginPath}`);\n return { pluginPath: fakePluginPath };\n }\n\n let pluginPath = actionArgs['--plugin-path'];\n\n // Default to fake-plugin if not provided\n if (!pluginPath) {\n pluginPath = pluginPath || fakePluginPath;\n\n console.log('Using default fake plugin:');\n console.log(` Plugin Path: ${pluginPath}`);\n }\n\n // Ensure plugin path is absolute\n if (!path.isAbsolute(pluginPath)) {\n pluginPath = path.resolve(process.cwd(), pluginPath);\n }\n\n // Verify plugin directory exists\n try {\n await fs.access(pluginPath);\n }\n catch {\n console.error(`Error: Plugin directory not found: ${pluginPath}`);\n process.exit(1);\n }\n\n const manifest = JSON.parse(await fs.readFile(path.resolve(pluginPath, 'manifest.json'), 'utf8'));\n\n return { pluginPath, pluginId: manifest.id };\n}\n\nasync function openDevtools() {\n const { pluginPath } = await getPluginInfo(false);\n\n console.log('\\nSetting up devtools URL...');\n const devtoolsConnection = await setupDevtoolsConnection(pluginPath);\n console.log(`DevTools URL: ${devtoolsConnection.url}\\n`);\n\n await openDevtoolsSessionInChrome(devtoolsConnection.url);\n console.log('Chrome DevTools opened');\n\n console.log('\\nPress Ctrl+C to exit...');\n await new Promise(() => {});\n}\n\nasync function dumpObject() {\n const { pluginPath } = await getPluginInfo(true);\n\n console.log('\\nSetting up devtools URL...');\n const devtoolsConnection = await setupDevtoolsConnection(pluginPath);\n console.log(`DevTools URL: ${devtoolsConnection.url}\\n`);\n\n console.log('Setting up CDP session...');\n const cdp = await setupCdpSession(devtoolsConnection.url);\n\n const executionContext = await waitForExecutionContextCreated(cdp, async () => {\n await setupCdpSessionWithUxpDefaults(cdp);\n });\n\n console.log('Evaluating expression...');\n const result = await cdp.Runtime.evaluate({\n expression: `\n (() => {\n const app = require(\"photoshop\").app;\n const activeDocumentGetter = Object.getOwnPropertyDescriptor(Reflect.getPrototypeOf(app), \"activeDocument\").get;\n return activeDocumentGetter;\n })();\n `,\n uniqueContextId: executionContext.uniqueId,\n });\n\n console.log('Getting properties...');\n const properties = await cdp.Runtime.getProperties({\n objectId: result.result.objectId!,\n accessorPropertiesOnly: false,\n generatePreview: false,\n nonIndexedPropertiesOnly: false,\n ownProperties: false,\n });\n\n const _functionLocation = properties.internalProperties?.find((property: any) => property.name === '[[FunctionLocation]]')?.value;\n const scopes = properties.internalProperties?.find((property: any) => property.name === '[[Scopes]]')?.value;\n\n const scopesProperties = await cdp.Runtime.getProperties({\n objectId: scopes!.objectId!,\n ownProperties: true,\n });\n\n const allScopesResolved = await Promise.all(\n scopesProperties.result.map((property: any) => cdp.Runtime.getProperties({\n objectId: property.value!.objectId!,\n ownProperties: true,\n })),\n );\n\n const dump = {\n subject: result.result,\n properties,\n scopes: allScopesResolved,\n };\n\n const dumpPath = path.resolve(process.cwd(), 'dump.json');\n await fs.writeFile(dumpPath, JSON.stringify(dump, null, 2));\n console.log(`\\nDump written to: ${dumpPath}`);\n}\n\n// Handle actions\nif (action === 'open-devtools') {\n await openDevtools();\n}\nelse if (action === 'dump-object') {\n await dumpObject();\n}\n\nprocess.on('SIGINT', () => {\n console.log('\\nReceived SIGINT, exiting...');\n process.exit(0);\n});\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bubblydoo/uxp-cli",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.0.3",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "dependencies": {
22
22
  "arg": "^5.0.2",
23
23
  "chrome-remote-interface": "^0.33.3",
24
- "@bubblydoo/uxp-cli-common": "0.0.2"
24
+ "@bubblydoo/uxp-devtools-common": "0.0.3"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/chrome-remote-interface": "^0.33.0",