@optimizely/ocp-cli 1.2.18-beta.0 → 1.3.1

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/README.md CHANGED
@@ -17,13 +17,35 @@ ocp
17
17
  ocp <namespace> -h
18
18
  ```
19
19
 
20
- ## Development
20
+ ## Commands
21
21
 
22
- ### Forbidden Dependencies
22
+ ### `ocp dev-server`
23
23
 
24
- The following dependencies have been intentionally removed from this project and **must not be re-added**:
24
+ Start the local development server for OCP applications.
25
25
 
26
- - `@zaiusinc/app-sdk`
27
- - `@zaiusinc/node-sdk`
26
+ The `@optimizely/ocp-local-env` package is automatically managed by this command:
27
+ - First run: Automatically installs the package globally
28
+ - Daily check: Checks for updates once per day and auto-upgrades when available
29
+ - No manual installation required
28
30
 
29
- These dependencies were removed to decouple the CLI from app-specific SDKs. An automated test (`src/test/dependencies.test.ts`) enforces this restriction and will fail if these packages are added to `package.json`.
31
+ **Options:**
32
+ - `-p, --port <port>` - Port to run the server on (default: 3000)
33
+ - `-c, --config <path>` - Path to custom config file
34
+ - `--path <path>` - Path to the OCP app root directory (default: current directory)
35
+ - `-v, --verbose` - Enable verbose logging
36
+ - `--no-open` - Don't automatically open browser
37
+
38
+ **Examples:**
39
+ ```bash
40
+ # Start server in current directory on default port
41
+ ocp dev-server start
42
+
43
+ # Start on custom port
44
+ ocp dev-server start -p 4000
45
+
46
+ # Start with specific app directory
47
+ ocp dev-server start --path /path/to/my-app
48
+
49
+ # Short version to start server
50
+ ocp dev
51
+ ```
@@ -0,0 +1,3 @@
1
+ export declare class Dev {
2
+ dev(): Promise<void>;
3
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Dev = void 0;
10
+ const DevServer_1 = require("./dev-server/DevServer");
11
+ const oo_cli_1 = require("oo-cli");
12
+ class Dev {
13
+ async dev() {
14
+ const dev = new DevServer_1.DevServerCommand();
15
+ await dev.start();
16
+ }
17
+ }
18
+ __decorate([
19
+ oo_cli_1.command,
20
+ (0, oo_cli_1.help)('Start the local development server for OCP apps (for more configuration options use ocp dev-server start)')
21
+ ], Dev.prototype, "dev", null);
22
+ exports.Dev = Dev;
23
+ //# sourceMappingURL=Dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dev.js","sourceRoot":"","sources":["../../src/commands/Dev.ts"],"names":[],"mappings":";;;;;;;;;AAAA,sDAAwD;AACxD,mCAAqC;AAErC,MAAa,GAAG;IAID,AAAN,KAAK,CAAC,GAAG;QACd,MAAM,GAAG,GAAG,IAAI,4BAAgB,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;CACF;AAJc;IAFZ,gBAAO;IACP,IAAA,aAAI,EAAC,2GAA2G,CAAC;8BAIjH;AAPH,kBAQC"}
@@ -1,6 +1,5 @@
1
1
  export declare const APP_ID_FORMAT: RegExp;
2
2
  export declare const VERSION_FORMAT: RegExp;
3
- export declare const VENDOR_FORMAT: RegExp;
4
3
  export declare class CreateCommand {
5
4
  id?: string;
6
5
  private variables;
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.CreateCommand = exports.VENDOR_FORMAT = exports.VERSION_FORMAT = exports.APP_ID_FORMAT = void 0;
9
+ exports.CreateCommand = exports.VERSION_FORMAT = exports.APP_ID_FORMAT = void 0;
10
10
  const chalk = require("chalk");
11
11
  const columnify = require("columnify");
12
12
  const fs = require("fs");
@@ -30,7 +30,6 @@ const die_1 = require("../../lib/die");
30
30
  const formatError_1 = require("../../lib/formatError");
31
31
  exports.APP_ID_FORMAT = /^[a-z][a-z_0-9]{2,31}$/;
32
32
  exports.VERSION_FORMAT = /^\d+\.\d+\.\d+(-(((dev|beta)(\.\d+)?)|private))?$/;
33
- exports.VENDOR_FORMAT = /^[a-z0-9]+(_[a-z0-9]+)*$/;
34
33
  let CreateCommand = class CreateCommand {
35
34
  constructor() {
36
35
  this.variableId = 0;
@@ -103,14 +102,6 @@ let CreateCommand = class CreateCommand {
103
102
  return chalk.yellow('must be semver. -beta, -dev, -private pre-releases are allowed');
104
103
  }
105
104
  break;
106
- case 'vendor':
107
- if (!input.match(/^[a-z]/)) {
108
- return chalk.yellow('must start with a lower case letter');
109
- }
110
- else if (!input.match(exports.VENDOR_FORMAT)) {
111
- return chalk.yellow('must be snake_case');
112
- }
113
- break;
114
105
  }
115
106
  return '';
116
107
  };
@@ -123,8 +114,6 @@ let CreateCommand = class CreateCommand {
123
114
  return exports.APP_ID_FORMAT.test(input);
124
115
  case 'version':
125
116
  return exports.VERSION_FORMAT.test(input);
126
- case 'vendor':
127
- return exports.VENDOR_FORMAT.test(input);
128
117
  }
129
118
  if (this.variable.required && input.length === 0) {
130
119
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"Init.js","sourceRoot":"","sources":["../../../src/commands/app/Init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Init.js","sourceRoot":"","sources":["../../../src/commands/app/Init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Dev Server command - starts the local development server for OCP apps
3
+ * This is a top-level command (no namespace decorator), so it runs as `ocp dev-server`
4
+ */
5
+ export declare class DevServerCommand {
6
+ port: string;
7
+ config?: string;
8
+ path?: string;
9
+ verbose: boolean;
10
+ noOpen: boolean;
11
+ private PACKAGE_NAME;
12
+ start(): Promise<void>;
13
+ /**
14
+ * Ensure @optimizely/ocp-local-env is installed globally and up-to-date.
15
+ * Checks once per day and auto-installs or auto-upgrades as needed.
16
+ */
17
+ private ensureOcpLocalEnv;
18
+ /**
19
+ * Check if a package is installed globally and return its version.
20
+ * @returns The installed version or null if not installed
21
+ */
22
+ private getInstalledVersion;
23
+ /**
24
+ * Get the latest version of a package from npm registry.
25
+ * @returns The latest version or null if unavailable
26
+ */
27
+ private getLatestVersion;
28
+ /**
29
+ * Install or update a global npm package.
30
+ * @param isUpgrade Whether this is an upgrade (affects success message)
31
+ * @returns True if successful, false otherwise
32
+ */
33
+ private installGlobalPackage;
34
+ }
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DevServerCommand = void 0;
10
+ const chalk = require("chalk");
11
+ const fs = require("fs");
12
+ const os = require("os");
13
+ const path = require("path");
14
+ const semver = require("semver");
15
+ const oo_cli_1 = require("oo-cli");
16
+ const die_1 = require("../../lib/die");
17
+ const formatError_1 = require("../../lib/formatError");
18
+ const handleInterrupt_1 = require("../../lib/handleInterrupt");
19
+ const TerminalOutput_1 = require("../../lib/TerminalOutput");
20
+ const TeminalPassthru_1 = require("../../lib/TeminalPassthru");
21
+ /**
22
+ * Dev Server command - starts the local development server for OCP apps
23
+ * This is a top-level command (no namespace decorator), so it runs as `ocp dev-server`
24
+ */
25
+ let DevServerCommand = class DevServerCommand {
26
+ constructor() {
27
+ this.PACKAGE_NAME = '@optimizely/ocp-local-env';
28
+ }
29
+ async start() {
30
+ var _a;
31
+ (0, handleInterrupt_1.handleInterrupt)();
32
+ try {
33
+ // Ensure ocp-local-env is installed and up-to-date
34
+ await this.ensureOcpLocalEnv();
35
+ // Set environment variables that ocp-local-env expects
36
+ process.env.OCP_LOCAL_PORT = this.port;
37
+ if (this.config) {
38
+ process.env.OCP_LOCAL_CONFIG_PATH = this.config;
39
+ }
40
+ process.env.OCP_LOCAL_VERBOSE = this.verbose ? 'true' : 'false';
41
+ process.env.OCP_LOCAL_OPEN_BROWSER = this.noOpen ? 'false' : 'true';
42
+ if (this.path) {
43
+ process.env.APP_ROOT_DIR = this.path;
44
+ }
45
+ // Import and call startServer from ocp-local-env (installed globally)
46
+ // Get the global npm modules path and construct the full package path
47
+ const globalRoot = TerminalOutput_1.TerminalOutput.exec('npm root -g').stdout.trim();
48
+ const packagePath = path.join(globalRoot, this.PACKAGE_NAME);
49
+ // @ts-ignore - Package is installed globally, not in node_modules
50
+ const { startServer } = await (_a = packagePath, Promise.resolve().then(() => require(_a)));
51
+ console.log(chalk.gray('Starting OCP local development server...'));
52
+ await startServer();
53
+ }
54
+ catch (e) {
55
+ (0, die_1.die)((0, formatError_1.formatError)(e));
56
+ }
57
+ }
58
+ /**
59
+ * Ensure @optimizely/ocp-local-env is installed globally and up-to-date.
60
+ * Checks once per day and auto-installs or auto-upgrades as needed.
61
+ */
62
+ async ensureOcpLocalEnv() {
63
+ // Ensure ~/.ocp directory exists
64
+ const ocpDir = path.join(os.homedir(), '.ocp');
65
+ if (!fs.existsSync(ocpDir)) {
66
+ fs.mkdirSync(ocpDir, { recursive: true });
67
+ }
68
+ const checkFile = path.join(os.homedir(), '.ocp', 'last-ocp-local-env-check');
69
+ // Check if we should skip (< 24 hours since last check)
70
+ if (fs.existsSync(checkFile)) {
71
+ const stats = fs.statSync(checkFile);
72
+ const hoursSinceCheck = (Date.now() - stats.mtimeMs) / (1000 * 60 * 60);
73
+ if (hoursSinceCheck < 24) {
74
+ return; // Skip check
75
+ }
76
+ }
77
+ // Check if installed globally
78
+ const installedVersion = this.getInstalledVersion();
79
+ if (!installedVersion) {
80
+ // Not installed - auto-install
81
+ console.log(chalk.gray('Installing @optimizely/ocp-local-env globally...'));
82
+ this.installGlobalPackage(false);
83
+ fs.writeFileSync(checkFile, '');
84
+ return;
85
+ }
86
+ // Check for updates
87
+ const latestVersion = await this.getLatestVersion();
88
+ if (latestVersion && semver.gt(latestVersion, installedVersion)) {
89
+ // Newer version available - auto-upgrade
90
+ console.log(chalk.gray(`Upgrading @optimizely/ocp-local-env (${installedVersion} → ${latestVersion})...`));
91
+ this.installGlobalPackage(true);
92
+ }
93
+ // Touch check file
94
+ fs.writeFileSync(checkFile, '');
95
+ }
96
+ /**
97
+ * Check if a package is installed globally and return its version.
98
+ * @returns The installed version or null if not installed
99
+ */
100
+ getInstalledVersion() {
101
+ var _a, _b;
102
+ try {
103
+ const result = TerminalOutput_1.TerminalOutput.exec(`npm list -g --depth=0 --json ${this.PACKAGE_NAME}`);
104
+ if (result.status === 0) {
105
+ const data = JSON.parse(result.stdout);
106
+ return ((_b = (_a = data.dependencies) === null || _a === void 0 ? void 0 : _a[this.PACKAGE_NAME]) === null || _b === void 0 ? void 0 : _b.version) || null;
107
+ }
108
+ return null;
109
+ }
110
+ catch (_c) {
111
+ return null;
112
+ }
113
+ }
114
+ /**
115
+ * Get the latest version of a package from npm registry.
116
+ * @returns The latest version or null if unavailable
117
+ */
118
+ async getLatestVersion() {
119
+ try {
120
+ const result = TerminalOutput_1.TerminalOutput.exec(`npm view ${this.PACKAGE_NAME} version`);
121
+ if (result.status === 0) {
122
+ return result.stdout.trim() || null;
123
+ }
124
+ return null;
125
+ }
126
+ catch (_a) {
127
+ return null;
128
+ }
129
+ }
130
+ /**
131
+ * Install or update a global npm package.
132
+ * @param isUpgrade Whether this is an upgrade (affects success message)
133
+ * @returns True if successful, false otherwise
134
+ */
135
+ installGlobalPackage(isUpgrade) {
136
+ const spec = isUpgrade ? `${this.PACKAGE_NAME}@latest` : this.PACKAGE_NAME;
137
+ const result = TeminalPassthru_1.TerminalPassthru.exec(`npm install -g ${spec}`);
138
+ if (result.status === 0) {
139
+ if (isUpgrade) {
140
+ // Get the newly installed version for the success message
141
+ const newVersion = this.getInstalledVersion();
142
+ console.log(chalk.green(`✓ Updated to version ${newVersion}`));
143
+ }
144
+ else {
145
+ console.log(chalk.green('✓ Installed @optimizely/ocp-local-env'));
146
+ }
147
+ return true;
148
+ }
149
+ else {
150
+ console.log(chalk.red('Installation failed. Please install manually with:'));
151
+ console.log(chalk.red(` npm install -g ${this.PACKAGE_NAME}`));
152
+ return false;
153
+ }
154
+ }
155
+ };
156
+ __decorate([
157
+ (0, oo_cli_1.option)('p'),
158
+ (0, oo_cli_1.help)('Port to run the server on'),
159
+ (0, oo_cli_1.defaultValue)('3000')
160
+ ], DevServerCommand.prototype, "port", void 0);
161
+ __decorate([
162
+ (0, oo_cli_1.option)('c'),
163
+ (0, oo_cli_1.help)('Path to custom config file')
164
+ ], DevServerCommand.prototype, "config", void 0);
165
+ __decorate([
166
+ oo_cli_1.option,
167
+ (0, oo_cli_1.help)('Path to the OCP app root directory')
168
+ ], DevServerCommand.prototype, "path", void 0);
169
+ __decorate([
170
+ (0, oo_cli_1.flag)('v'),
171
+ (0, oo_cli_1.help)('Enable verbose logging'),
172
+ (0, oo_cli_1.defaultValue)(false)
173
+ ], DevServerCommand.prototype, "verbose", void 0);
174
+ __decorate([
175
+ (0, oo_cli_1.flag)('no-open'),
176
+ (0, oo_cli_1.help)('Don\'t automatically open browser'),
177
+ (0, oo_cli_1.defaultValue)(false)
178
+ ], DevServerCommand.prototype, "noOpen", void 0);
179
+ __decorate([
180
+ oo_cli_1.command,
181
+ (0, oo_cli_1.help)('Start the local development server for OCP apps')
182
+ ], DevServerCommand.prototype, "start", null);
183
+ DevServerCommand = __decorate([
184
+ (0, oo_cli_1.namespace)('dev-server')
185
+ ], DevServerCommand);
186
+ exports.DevServerCommand = DevServerCommand;
187
+ //# sourceMappingURL=DevServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevServer.js","sourceRoot":"","sources":["../../../src/commands/dev-server/DevServer.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -21,7 +21,7 @@ async function run() {
21
21
  if (!fs.existsSync(configFolder)) {
22
22
  (0, die_1.die)('No ~/.ocp config folder found. ' +
23
23
  'Follow the instruction in ' +
24
- 'https://docs.developers.optimizely.com/optimizely-connect-platform/docs/ocp-cli-commands ' +
24
+ 'https://docs.developers.optimizely.com/optimizely-connect-platform/docs/configure-your-development-environment-ocp2 ' +
25
25
  'to set up your development environment.');
26
26
  }
27
27
  (0, EnvironmentalOutput_1.showEnvironment)();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAChC,6BAA6B;AAC7B,mEAA4D;AAC5D,yDAAsD;AACtD,yBAAyB;AACzB,yBAAyB;AACzB,mDAA8C;AAC9C,yDAAoD;AACpD,mCAA8B;AAC9B,+BAA+B;AAE/B,KAAK,UAAU,GAAG;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;QACpD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,SAAS,CAAC,4FAA4F,CAAC,CAC9G,CAAC;KACH;IAED,MAAM,IAAA,+BAAc,EAAC,QAAQ,CAAC,CAAC;IAE/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC9B,IAAA,SAAG,EACD,iCAAiC;YACjC,4BAA4B;YAC5B,2FAA2F;YAC3F,yCAAyC,CAC1C,CAAC;KACL;IAED,IAAA,qCAAe,GAAE,CAAC;IAElB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACzE,MAAM,IAAA,+BAAc,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEzC,IAAI,eAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC,CAAC;AAED,4GAA4G;AAC5G,yCAAyC;AACzC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAChC,6BAA6B;AAC7B,mEAA4D;AAC5D,yDAAsD;AACtD,yBAAyB;AACzB,yBAAyB;AACzB,mDAA8C;AAC9C,yDAAoD;AACpD,mCAA8B;AAC9B,+BAA+B;AAE/B,KAAK,UAAU,GAAG;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;QACpD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,SAAS,CAAC,4FAA4F,CAAC,CAC9G,CAAC;KACH;IAED,MAAM,IAAA,+BAAc,EAAC,QAAQ,CAAC,CAAC;IAE/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC9B,IAAA,SAAG,EACD,iCAAiC;YACjC,4BAA4B;YAC5B,sHAAsH;YACtH,yCAAyC,CAC1C,CAAC;KACL;IAED,IAAA,qCAAe,GAAE,CAAC;IAElB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACzE,MAAM,IAAA,+BAAc,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEzC,IAAI,eAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC,CAAC;AAED,4GAA4G;AAC5G,yCAAyC;AACzC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -14,7 +14,7 @@ class AppPackager {
14
14
  console.log(chalk.gray(`Packaging files in ${this.rootPath}`));
15
15
  const files = await globby(['**/*'], {
16
16
  gitignore: true,
17
- ignore: ['node_modules/**/*', '*.zip', '.git/**/*'],
17
+ ignore: ['node_modules/**/*', '*.zip', '.git/**/*', '.ocp-local/**/*'],
18
18
  cwd: this.rootPath,
19
19
  dot: true,
20
20
  onlyFiles: true,
@@ -1 +1 @@
1
- {"version":3,"file":"AppPackager.js","sourceRoot":"","sources":["../../src/lib/AppPackager.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAClC,+BAA+B;AAC/B,yBAAyB;AACzB,6BAA6B;AAC7B,iCAAiC;AAEjC,MAAa,WAAW;IAGtB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE;YACnC,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,mBAAmB,EAAE,OAAO,EAAE,WAAW,CAAC;YACnD,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,SAAS,CAAC,OAAe,EAAE,KAAe;QAChD,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;gBACnC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;CACF;AAjCD,kCAiCC"}
1
+ {"version":3,"file":"AppPackager.js","sourceRoot":"","sources":["../../src/lib/AppPackager.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAClC,+BAA+B;AAC/B,yBAAyB;AACzB,6BAA6B;AAC7B,iCAAiC;AAEjC,MAAa,WAAW;IAGtB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE;YACnC,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC;YACtE,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,SAAS,CAAC,OAAe,EAAE,KAAe;QAChD,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;gBACnC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;CACF;AAjCD,kCAiCC"}
@@ -1016,6 +1016,78 @@
1016
1016
  }
1017
1017
  ]
1018
1018
  },
1019
+ "dev-server": {
1020
+ "namespaces": {},
1021
+ "commands": [
1022
+ {
1023
+ "path": "commands/dev-server/DevServer.js",
1024
+ "className": "DevServerCommand",
1025
+ "key": "start",
1026
+ "command": "start",
1027
+ "aliases": [],
1028
+ "help": "Start the local development server for OCP apps",
1029
+ "documentation": "TBD",
1030
+ "flags": [
1031
+ {
1032
+ "name": "verbose",
1033
+ "key": "verbose",
1034
+ "aliases": [
1035
+ "v"
1036
+ ],
1037
+ "invertedAliases": [],
1038
+ "help": "Enable verbose logging",
1039
+ "defaultValue": false,
1040
+ "invertible": false,
1041
+ "optional": true
1042
+ },
1043
+ {
1044
+ "name": "noOpen",
1045
+ "key": "noOpen",
1046
+ "aliases": [
1047
+ "no-open"
1048
+ ],
1049
+ "invertedAliases": [],
1050
+ "help": "Don't automatically open browser",
1051
+ "defaultValue": false,
1052
+ "invertible": false,
1053
+ "optional": true
1054
+ }
1055
+ ],
1056
+ "options": [
1057
+ {
1058
+ "name": "port",
1059
+ "key": "port",
1060
+ "aliases": [
1061
+ "p"
1062
+ ],
1063
+ "help": "Port to run the server on",
1064
+ "defaultValue": "3000",
1065
+ "optional": true,
1066
+ "multiple": false
1067
+ },
1068
+ {
1069
+ "name": "config",
1070
+ "key": "config",
1071
+ "aliases": [
1072
+ "c"
1073
+ ],
1074
+ "help": "Path to custom config file",
1075
+ "optional": true,
1076
+ "multiple": false
1077
+ },
1078
+ {
1079
+ "name": "path",
1080
+ "key": "path",
1081
+ "aliases": [],
1082
+ "help": "Path to the OCP app root directory",
1083
+ "optional": true,
1084
+ "multiple": false
1085
+ }
1086
+ ],
1087
+ "params": []
1088
+ }
1089
+ ]
1090
+ },
1019
1091
  "env": {
1020
1092
  "namespaces": {},
1021
1093
  "commands": [
@@ -1369,9 +1441,22 @@
1369
1441
  ]
1370
1442
  }
1371
1443
  },
1372
- "commands": [],
1444
+ "commands": [
1445
+ {
1446
+ "path": "commands/Dev.js",
1447
+ "className": "Dev",
1448
+ "key": "dev",
1449
+ "command": "dev",
1450
+ "aliases": [],
1451
+ "help": "Start the local development server for OCP apps (for more configuration options use ocp dev-server start)",
1452
+ "documentation": "TBD",
1453
+ "flags": [],
1454
+ "options": [],
1455
+ "params": []
1456
+ }
1457
+ ],
1373
1458
  "package": {
1374
- "version": "1.2.18-beta.0",
1459
+ "version": "1.3.1",
1375
1460
  "name": "@optimizely/ocp-cli",
1376
1461
  "license": "Apache-2.0",
1377
1462
  "executable": "ocp"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optimizely/ocp-cli",
3
- "version": "1.2.18-beta.0",
3
+ "version": "1.3.1",
4
4
  "description": "Optimizely Connect Platform command line interface",
5
5
  "repository": "https://github.com/ZaiusInc/ocp-cli",
6
6
  "license": "Apache-2.0",
@@ -74,7 +74,7 @@
74
74
  "copy": "^0.3.2",
75
75
  "execa": "^9.6.0",
76
76
  "nodemon": "^2.0.22",
77
- "release-it": "^15.10.1",
77
+ "release-it": "^17.11.0",
78
78
  "rimraf": "^3.0.2",
79
79
  "tslint": "^5.16.0",
80
80
  "typescript": "^4.7.4",
@@ -82,8 +82,5 @@
82
82
  },
83
83
  "engines": {
84
84
  "node": ">=18.0.0"
85
- },
86
- "resolutions": {
87
- "whatwg-url": "^12.0.0"
88
85
  }
89
86
  }
@@ -0,0 +1,12 @@
1
+ import {DevServerCommand} from './dev-server/DevServer';
2
+ import {command, help} from 'oo-cli';
3
+
4
+ export class Dev {
5
+
6
+ @command
7
+ @help('Start the local development server for OCP apps (for more configuration options use ocp dev-server start)')
8
+ public async dev() {
9
+ const dev = new DevServerCommand();
10
+ await dev.start();
11
+ }
12
+ }
@@ -24,7 +24,6 @@ import {DependencyStage} from '../../lib/DependencyStage';
24
24
 
25
25
  export const APP_ID_FORMAT = /^[a-z][a-z_0-9]{2,31}$/;
26
26
  export const VERSION_FORMAT = /^\d+\.\d+\.\d+(-(((dev|beta)(\.\d+)?)|private))?$/;
27
- export const VENDOR_FORMAT = /^[a-z0-9]+(_[a-z0-9]+)*$/;
28
27
 
29
28
  @namespace('app')
30
29
  export class CreateCommand {
@@ -239,14 +238,7 @@ export class CreateCommand {
239
238
  }
240
239
  break;
241
240
 
242
- case 'vendor':
243
- if (!input.match(/^[a-z]/)) {
244
- return chalk.yellow('must start with a lower case letter');
245
- } else if (!input.match(VENDOR_FORMAT)) {
246
- return chalk.yellow('must be snake_case');
247
- }
248
- break;
249
- }
241
+ }
250
242
  return '';
251
243
  }
252
244
 
@@ -259,8 +251,6 @@ export class CreateCommand {
259
251
  return APP_ID_FORMAT.test(input);
260
252
  case 'version':
261
253
  return VERSION_FORMAT.test(input);
262
- case 'vendor':
263
- return VENDOR_FORMAT.test(input);
264
254
  }
265
255
 
266
256
  if (this.variable.required && input.length === 0) {
@@ -0,0 +1,180 @@
1
+ import * as chalk from 'chalk';
2
+ import * as fs from 'fs';
3
+ import * as os from 'os';
4
+ import * as path from 'path';
5
+ import * as semver from 'semver';
6
+ import {command, defaultValue, flag, help, option, namespace} from 'oo-cli';
7
+ import {die} from '../../lib/die';
8
+ import {formatError} from '../../lib/formatError';
9
+ import {handleInterrupt} from '../../lib/handleInterrupt';
10
+ import {TerminalOutput} from '../../lib/TerminalOutput';
11
+ import {TerminalPassthru} from '../../lib/TeminalPassthru';
12
+
13
+ /**
14
+ * Dev Server command - starts the local development server for OCP apps
15
+ * This is a top-level command (no namespace decorator), so it runs as `ocp dev-server`
16
+ */
17
+ @namespace('dev-server')
18
+ export class DevServerCommand {
19
+ @option('p')
20
+ @help('Port to run the server on')
21
+ @defaultValue('3000')
22
+ public port!: string;
23
+
24
+ @option('c')
25
+ @help('Path to custom config file')
26
+ public config?: string;
27
+
28
+ @option
29
+ @help('Path to the OCP app root directory')
30
+ public path?: string;
31
+
32
+ @flag('v')
33
+ @help('Enable verbose logging')
34
+ @defaultValue(false)
35
+ public verbose!: boolean;
36
+
37
+ @flag('no-open')
38
+ @help('Don\'t automatically open browser')
39
+ @defaultValue(false)
40
+ public noOpen!: boolean;
41
+
42
+ private PACKAGE_NAME = '@optimizely/ocp-local-env';
43
+
44
+ @command
45
+ @help('Start the local development server for OCP apps')
46
+ public async start() {
47
+ handleInterrupt();
48
+
49
+ try {
50
+ // Ensure ocp-local-env is installed and up-to-date
51
+ await this.ensureOcpLocalEnv();
52
+
53
+ // Set environment variables that ocp-local-env expects
54
+ process.env.OCP_LOCAL_PORT = this.port;
55
+ if (this.config) {
56
+ process.env.OCP_LOCAL_CONFIG_PATH = this.config;
57
+ }
58
+ process.env.OCP_LOCAL_VERBOSE = this.verbose ? 'true' : 'false';
59
+ process.env.OCP_LOCAL_OPEN_BROWSER = this.noOpen ? 'false' : 'true';
60
+ if (this.path) {
61
+ process.env.APP_ROOT_DIR = this.path;
62
+ }
63
+
64
+ // Import and call startServer from ocp-local-env (installed globally)
65
+ // Get the global npm modules path and construct the full package path
66
+ const globalRoot = TerminalOutput.exec('npm root -g').stdout.trim();
67
+ const packagePath = path.join(globalRoot, this.PACKAGE_NAME);
68
+
69
+ // @ts-ignore - Package is installed globally, not in node_modules
70
+ const {startServer} = await import(packagePath);
71
+
72
+ console.log(chalk.gray('Starting OCP local development server...'));
73
+ await startServer();
74
+ } catch (e: any) {
75
+ die(formatError(e));
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Ensure @optimizely/ocp-local-env is installed globally and up-to-date.
81
+ * Checks once per day and auto-installs or auto-upgrades as needed.
82
+ */
83
+ private async ensureOcpLocalEnv(): Promise<void> {
84
+ // Ensure ~/.ocp directory exists
85
+ const ocpDir = path.join(os.homedir(), '.ocp');
86
+ if (!fs.existsSync(ocpDir)) {
87
+ fs.mkdirSync(ocpDir, {recursive: true});
88
+ }
89
+
90
+ const checkFile = path.join(os.homedir(), '.ocp', 'last-ocp-local-env-check');
91
+ // Check if we should skip (< 24 hours since last check)
92
+ if (fs.existsSync(checkFile)) {
93
+ const stats = fs.statSync(checkFile);
94
+ const hoursSinceCheck = (Date.now() - stats.mtimeMs) / (1000 * 60 * 60);
95
+ if (hoursSinceCheck < 24) {
96
+ return; // Skip check
97
+ }
98
+ }
99
+
100
+ // Check if installed globally
101
+ const installedVersion = this.getInstalledVersion();
102
+
103
+ if (!installedVersion) {
104
+ // Not installed - auto-install
105
+ console.log(chalk.gray('Installing @optimizely/ocp-local-env globally...'));
106
+ this.installGlobalPackage(false);
107
+ fs.writeFileSync(checkFile, '');
108
+ return;
109
+ }
110
+
111
+ // Check for updates
112
+ const latestVersion = await this.getLatestVersion();
113
+ if (latestVersion && semver.gt(latestVersion, installedVersion)) {
114
+ // Newer version available - auto-upgrade
115
+ console.log(chalk.gray(`Upgrading @optimizely/ocp-local-env (${installedVersion} → ${latestVersion})...`));
116
+ this.installGlobalPackage(true);
117
+ }
118
+
119
+ // Touch check file
120
+ fs.writeFileSync(checkFile, '');
121
+ }
122
+
123
+ /**
124
+ * Check if a package is installed globally and return its version.
125
+ * @returns The installed version or null if not installed
126
+ */
127
+ private getInstalledVersion(): string | null {
128
+ try {
129
+ const result = TerminalOutput.exec(`npm list -g --depth=0 --json ${this.PACKAGE_NAME}`);
130
+ if (result.status === 0) {
131
+ const data = JSON.parse(result.stdout);
132
+ return data.dependencies?.[this.PACKAGE_NAME]?.version || null;
133
+ }
134
+ return null;
135
+ } catch {
136
+ return null;
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Get the latest version of a package from npm registry.
142
+ * @returns The latest version or null if unavailable
143
+ */
144
+ private async getLatestVersion(): Promise<string | null> {
145
+ try {
146
+ const result = TerminalOutput.exec(`npm view ${this.PACKAGE_NAME} version`);
147
+ if (result.status === 0) {
148
+ return result.stdout.trim() || null;
149
+ }
150
+ return null;
151
+ } catch {
152
+ return null;
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Install or update a global npm package.
158
+ * @param isUpgrade Whether this is an upgrade (affects success message)
159
+ * @returns True if successful, false otherwise
160
+ */
161
+ private installGlobalPackage(isUpgrade: boolean): boolean {
162
+ const spec = isUpgrade ? `${this.PACKAGE_NAME}@latest` : this.PACKAGE_NAME;
163
+ const result = TerminalPassthru.exec(`npm install -g ${spec}`);
164
+
165
+ if (result.status === 0) {
166
+ if (isUpgrade) {
167
+ // Get the newly installed version for the success message
168
+ const newVersion = this.getInstalledVersion();
169
+ console.log(chalk.green(`✓ Updated to version ${newVersion}`));
170
+ } else {
171
+ console.log(chalk.green('✓ Installed @optimizely/ocp-local-env'));
172
+ }
173
+ return true;
174
+ } else {
175
+ console.log(chalk.red('Installation failed. Please install manually with:'));
176
+ console.log(chalk.red(` npm install -g ${this.PACKAGE_NAME}`));
177
+ return false;
178
+ }
179
+ }
180
+ }
package/src/index.ts CHANGED
@@ -25,7 +25,7 @@ async function run() {
25
25
  die(
26
26
  'No ~/.ocp config folder found. ' +
27
27
  'Follow the instruction in ' +
28
- 'https://docs.developers.optimizely.com/optimizely-connect-platform/docs/ocp-cli-commands ' +
28
+ 'https://docs.developers.optimizely.com/optimizely-connect-platform/docs/configure-your-development-environment-ocp2 ' +
29
29
  'to set up your development environment.'
30
30
  );
31
31
  }
@@ -16,7 +16,7 @@ export class AppPackager {
16
16
 
17
17
  const files = await globby(['**/*'], {
18
18
  gitignore: true, // respects .gitignore
19
- ignore: ['node_modules/**/*', '*.zip', '.git/**/*'],
19
+ ignore: ['node_modules/**/*', '*.zip', '.git/**/*', '.ocp-local/**/*'],
20
20
  cwd: this.rootPath,
21
21
  dot: true,
22
22
  onlyFiles: true,