contensis-cli 1.1.2-beta.1 → 1.1.2-beta.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/version.ts"],
4
- "sourcesContent": ["export const LIB_VERSION = \"1.1.2-beta.1\";\n"],
4
+ "sourcesContent": ["export const LIB_VERSION = \"1.1.2-beta.3\";\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "contensis-cli",
3
- "version": "1.1.2-beta.1",
3
+ "version": "1.1.2-beta.3",
4
4
  "description": "A fully featured Contensis command line interface with a shell UI provides simple and intuitive ways to manage or profile your content in any NodeJS terminal.",
5
5
  "repository": "https://github.com/contensis/cli",
6
6
  "homepage": "https://github.com/contensis/cli/tree/main/packages/contensis-cli#readme",
@@ -49,20 +49,28 @@ Example call:
49
49
  dev
50
50
  .command('requests')
51
51
  .description('launch request handler for local development')
52
- .argument('[block-ids...]', 'ids of any blocks to develop locally')
52
+ .argument(
53
+ '[block-id...]',
54
+ 'id of block to develop locally and the local uri to pass requests for this block onto'
55
+ )
53
56
  .option('--args <args...>', 'override or add additional args')
54
- .usage('[block-ids...]')
57
+ .option(
58
+ '--release <release>',
59
+ 'launch a specific release version of the request handler'
60
+ )
61
+ .usage('[block-id] [local-uri]')
55
62
  .addHelpText(
56
63
  'after',
57
64
  `
58
65
  Example call:
59
- > dev requests test-block-one\n`
66
+ > dev requests test-block-one
67
+ > dev requests my-website http://localhost:8080\n`
60
68
  )
61
- .action(async (blockIds: string[] = [], opts) => {
69
+ .action(async (blockId: string[] = [], opts) => {
62
70
  await devCommand(
63
- ['dev', 'requests', blockIds.join(' ')],
71
+ ['dev', 'requests', blockId.join(' ')],
64
72
  opts
65
- ).ExecRequestHandler(blockIds, opts?.args);
73
+ ).ExecRequestHandler(blockId, opts?.args, opts.release);
66
74
  });
67
75
 
68
76
  return dev;
@@ -298,6 +298,7 @@ Example call:
298
298
  Example call:
299
299
  > get block contensis-website
300
300
  > get block contensis-website develop latest
301
+ > get block contensis-website feature-branch 3
301
302
  `
302
303
  )
303
304
  .action(async (blockId: string, branch: string, version: string, opts) => {
@@ -6,7 +6,7 @@ import { LogMessages } from '~/localisation/en-GB';
6
6
  import GitHubCliModuleProvider from '~/providers/GitHubCliModuleProvider';
7
7
 
8
8
  import ManifestProvider from '~/providers/ManifestProvider';
9
- import { appRootDir, joinPath } from '~/providers/file-provider';
9
+ import { appRootDir, checkDir, joinPath } from '~/providers/file-provider';
10
10
  import { isDebug } from '~/util/debug';
11
11
  import { Logger } from '~/util/logger';
12
12
 
@@ -21,6 +21,7 @@ export class RequestHandlerFactory {
21
21
  cmd = 'Zengenti.Contensis.RequestHandler.LocalDevelopment';
22
22
 
23
23
  prerelease;
24
+ version; // pass in a specific release version to run
24
25
 
25
26
  get exePath() {
26
27
  return path.join(this.basePath, `${this.name}-${this.moduleInfo.version}`);
@@ -35,29 +36,31 @@ export class RequestHandlerFactory {
35
36
  );
36
37
  }
37
38
 
38
- constructor(prerelease = false) {
39
+ constructor(version?: string, prerelease = false) {
39
40
  this.prerelease = prerelease;
41
+ this.version = version;
40
42
  }
41
43
 
42
44
  // Use the factory to create a request handler instance
43
45
  // handling the download and updating of the external binary
44
46
  async Create() {
45
- const { moduleInfo } = this;
46
- const firstUse = !moduleInfo?.version || moduleInfo?.version === '*';
47
+ const { moduleInfo, version } = this;
48
+ const downloadImmediately =
49
+ !moduleInfo?.version || moduleInfo?.version === '*' || this.version;
47
50
 
48
- if (firstUse) {
51
+ if (downloadImmediately) {
49
52
  // Create cli-manifest.json
50
53
  this.manifest.writeModule(this.name, this.moduleInfo);
51
54
 
52
55
  // Download for first time use (await)
53
- await this.CheckUpdate({ verbose: true });
56
+ await this.CheckUpdate({ verbose: true, version });
54
57
  }
55
58
 
56
59
  // Apply any downloaded/pending update so we launch that version
57
60
  await this.ApplyUpdate();
58
61
 
59
62
  // Fire an async update check and continue working in the background (do not await)
60
- if (!firstUse) this.CheckUpdate();
63
+ if (!downloadImmediately) this.CheckUpdate();
61
64
 
62
65
  // Return a RequestHandler ready to invoke
63
66
  return this.CreateInvoke(this);
@@ -121,11 +124,17 @@ export class RequestHandlerFactory {
121
124
  };
122
125
  }
123
126
 
124
- async CheckUpdate({ verbose = false }: { verbose?: boolean } = {}) {
125
- const { debug, log, manifest, messages, moduleInfo } = this;
127
+ async CheckUpdate({
128
+ verbose = false,
129
+ version,
130
+ }: { verbose?: boolean; version?: string } = {}) {
131
+ const { cmd, debug, log, manifest, messages, moduleInfo } = this;
132
+
126
133
  const github = new GitHubCliModuleProvider(moduleInfo.github);
134
+
127
135
  // Find latest version
128
- const release = await github.FindLatestRelease();
136
+ const release = await github.FindLatestRelease(version);
137
+
129
138
  if (verbose || debug)
130
139
  if (release)
131
140
  log.info(
@@ -137,10 +146,14 @@ export class RequestHandlerFactory {
137
146
  else
138
147
  log.warning(messages.devrequests.install.notFound(moduleInfo.github));
139
148
 
149
+ const downloadSpecificRelease =
150
+ version && !checkDir('c') && release?.tag_name;
151
+
140
152
  // Should we download an update?
141
153
  if (
142
- release?.tag_name &&
143
- ![moduleInfo.version, moduleInfo.install].includes(release.tag_name)
154
+ (release?.tag_name &&
155
+ ![moduleInfo.version, moduleInfo.install].includes(release.tag_name)) ||
156
+ downloadSpecificRelease
144
157
  ) {
145
158
  // Download platform-specific release asset
146
159
  const downloadPath = path.join(
@@ -160,6 +173,7 @@ export class RequestHandlerFactory {
160
173
  }
161
174
  try {
162
175
  await github.DownloadRelease(release, {
176
+ cmd,
163
177
  path: downloadPath,
164
178
  // Map NodeJS os platform to release asset name
165
179
  platforms: [
@@ -186,10 +200,16 @@ export class RequestHandlerFactory {
186
200
  ),
187
201
  });
188
202
 
189
- // Update module info with downloaded release
190
- this.moduleInfo.install = release.tag_name;
191
- // Write module info update to manifest so it installs on next invoke
192
- manifest.writeModule(this.name, this.moduleInfo);
203
+ if (!version) {
204
+ // Update module info with downloaded release
205
+ this.moduleInfo.install = release.tag_name;
206
+ // Write module info update to manifest so it installs on next invoke
207
+ manifest.writeModule(this.name, this.moduleInfo);
208
+ } else {
209
+ // Set module version in memory so the request handler
210
+ // will be invoked with this version this time only
211
+ this.moduleInfo.version = release.tag_name;
212
+ }
193
213
  }
194
214
  }
195
215
  }
@@ -222,4 +242,5 @@ export class RequestHandlerFactory {
222
242
  }
223
243
  }
224
244
 
225
- export const createRequestHandler = () => new RequestHandlerFactory().Create();
245
+ export const createRequestHandler = (version?: string) =>
246
+ new RequestHandlerFactory(version).Create();
@@ -607,8 +607,7 @@ export const LogMessages = {
607
607
  install: {
608
608
  notFound: (repo: string) =>
609
609
  `Could not find a release in ${repo} repo - please check github`,
610
- download: (repo: string, version: string) =>
611
- `Found release ${repo} ${version}`,
610
+ download: (repo: string, version: string) => `Found release ${version}`,
612
611
  downloading: (repo: string, version: string) =>
613
612
  `Downloading ${repo} ${version}`,
614
613
  downloadFail: (repo: string, version: string) =>
@@ -621,6 +620,8 @@ export const LogMessages = {
621
620
  )}?`,
622
621
  },
623
622
  launch: () => `Launching request handler for local development`,
623
+ overrideBlock: () => `Which block will you be running?`,
624
+ overrideUri: () => `How to access your development site`,
624
625
  spawn: () =>
625
626
  `If you see a firewall popup requesting network access, it is safe to approve`,
626
627
  exited: (code: number | null) =>
@@ -32,114 +32,148 @@ type RendererRuleJson = {
32
32
  interface ISiteConfigYaml {
33
33
  alias: string;
34
34
  projectId: string;
35
- accessToken: string;
35
+ accessToken: string; // needed?
36
36
  clientId: string;
37
37
  sharedSecret: string;
38
38
  blocks: BlockJson[];
39
39
  renderers: RendererJson[];
40
40
  }
41
41
 
42
- export const buildSiteConfig = async (cli: ContensisCli) => {
43
- const { currentEnv, env, log, messages } = cli;
44
- const siteConfig: ISiteConfigYaml = {
45
- alias: cli.currentEnv,
46
- projectId: cli.currentProject,
47
- accessToken: '',
48
- clientId: '',
49
- sharedSecret: '',
50
- blocks: [],
51
- renderers: [],
42
+ class RequestHandlerArgs {
43
+ private cli;
44
+ args?: string[];
45
+ siteConfig?: ISiteConfigYaml;
46
+
47
+ constructor(cli: ContensisCli) {
48
+ this.cli = cli;
49
+ }
50
+
51
+ Create = async () => {
52
+ this.siteConfig = await this.buildSiteConfig();
53
+ await this.cli.Login(this.cli.env.lastUserId, { silent: true }); // to hydrate the auth service
54
+ this.args = this.getArgs();
52
55
  };
53
56
 
54
- const getBlocks = async (contensis: ContensisMigrationService) => {
55
- const [err, blocksRaw] = await contensis.blocks.GetBlocks();
56
- if (err) log.error(messages.blocks.noList(currentEnv, env.currentProject));
57
+ buildSiteConfig = async () => {
58
+ const { currentEnv, currentProject, env, log, messages } = this.cli;
59
+ const siteConfig: ISiteConfigYaml = {
60
+ alias: currentEnv,
61
+ projectId: currentProject,
62
+ accessToken: '',
63
+ clientId: '',
64
+ sharedSecret: '',
65
+ blocks: [],
66
+ renderers: [],
67
+ };
57
68
 
58
- // const blocksRaw = await cli.PrintBlocks();
69
+ const getBlocks = async (contensis: ContensisMigrationService) => {
70
+ const [err, blocksRaw] = await contensis.blocks.GetBlocks();
71
+ if (err)
72
+ log.error(messages.blocks.noList(currentEnv, env.currentProject));
59
73
 
60
- const blocks: BlockJson[] = [];
61
- for (const block of blocksRaw || []) {
62
- // Retrieve block version
63
- const [err, versions] = await contensis.blocks.GetBlockVersions(
64
- block.id,
65
- 'default',
66
- 'latest'
67
- );
68
- if (err || versions?.length === 0)
69
- log.warning(
70
- messages.blocks.noGet(
71
- block.id,
72
- 'default',
73
- 'latest',
74
- currentEnv,
75
- env.currentProject
76
- )
74
+ // const blocksRaw = await cli.PrintBlocks();
75
+
76
+ const blocks: BlockJson[] = [];
77
+ for (const block of blocksRaw || []) {
78
+ // Retrieve block version
79
+ const [err, versions] = await contensis.blocks.GetBlockVersions(
80
+ block.id,
81
+ 'default',
82
+ 'latest'
77
83
  );
78
- if (versions?.[0]) {
79
- const v = versions[0];
80
- blocks.push({
81
- id: v.id,
82
- baseUri: v.previewUrl,
83
- staticPaths: v.staticPaths,
84
- endpoints: v.endpoints,
85
- versionNo: v.version.versionNo,
86
- branch: v.source.branch,
87
- });
84
+ if (err || versions?.length === 0)
85
+ log.warning(
86
+ messages.blocks.noGet(
87
+ block.id,
88
+ 'default',
89
+ 'latest',
90
+ currentEnv,
91
+ env.currentProject
92
+ )
93
+ );
94
+ if (versions?.[0]) {
95
+ const v = versions[0];
96
+ blocks.push({
97
+ id: v.id,
98
+ baseUri: v.previewUrl,
99
+ staticPaths: v.staticPaths,
100
+ endpoints: v.endpoints,
101
+ versionNo: v.version.versionNo,
102
+ branch: v.source.branch,
103
+ });
104
+ }
88
105
  }
106
+ return blocks;
107
+ };
108
+
109
+ const contensis = await this.cli.ConnectContensis();
110
+ if (contensis) {
111
+ const [blocks, renderers] = await Promise.all([
112
+ getBlocks(contensis),
113
+ contensis.renderers.GetRenderers(),
114
+ ]);
115
+
116
+ siteConfig.blocks = blocks;
117
+ siteConfig.renderers = renderers?.[1]?.map(r => ({
118
+ id: r.id,
119
+ name: r.name,
120
+ assignedContentTypes: r.assignedContentTypes,
121
+ rules: r.rules,
122
+ }));
89
123
  }
90
- return blocks;
124
+ return siteConfig;
91
125
  };
92
126
 
93
- const contensis = await cli.ConnectContensis();
94
- if (contensis) {
95
- const [blocks, renderers] = await Promise.all([
96
- getBlocks(contensis),
97
- contensis.renderers.GetRenderers(),
98
- ]);
99
-
100
- siteConfig.blocks = blocks;
101
- siteConfig.renderers = renderers?.[1]?.map(r => ({
102
- id: r.id,
103
- name: r.name,
104
- assignedContentTypes: r.assignedContentTypes,
105
- rules: r.rules,
106
- }));
107
- }
108
- return siteConfig;
109
- };
127
+ getArgs = (overrideArgs: string[] = []) => {
128
+ const args = overrideArgs
129
+ ? typeof overrideArgs?.[0] === 'string' &&
130
+ overrideArgs[0].includes(' ', 2)
131
+ ? overrideArgs[0].split(' ')
132
+ : overrideArgs
133
+ : []; // args could be [ '-c .\\site_config.yaml' ] or [ '-c', '.\\site_config.yaml' ]
110
134
 
111
- export const requestHandlerCliArgs = async (
112
- cli: ContensisCli,
113
- overrideArgs: string[] = []
114
- ) => {
115
- const args = overrideArgs
116
- ? typeof overrideArgs?.[0] === 'string' && overrideArgs[0].includes(' ', 2)
117
- ? overrideArgs[0].split(' ')
118
- : overrideArgs
119
- : []; // args could be [ '-c .\\site_config.yaml' ] or [ '-c', '.\\site_config.yaml' ]
120
-
121
- const siteConfig = await buildSiteConfig(cli);
122
- // Add required args
123
- if (!args.find(a => a === '--alias')) args.push('--alias', cli.currentEnv);
124
- if (!args.find(a => a === '--project-api-id'))
125
- args.push('--project-api-id', cli.currentProject);
126
- if (!args.find(a => a === '--blocks-json'))
127
- args.push('--blocks-json', JSON.stringify(siteConfig.blocks));
128
- if (!args.find(a => a === '--renderers-json'))
129
- args.push('--renderers-json', JSON.stringify(siteConfig.renderers));
130
-
131
- await cli.Login(cli.env.lastUserId, { silent: true }); // to hydrate the auth service
132
- const client = cli.auth?.clientDetails;
133
- if (client) {
134
- if (!args.find(a => a === '--client-id') && 'clientId' in client)
135
- args.push('--client-id', client.clientId);
136
- if (!args.find(a => a === '--client-secret') && 'clientSecret' in client)
137
- args.push('--client-secret', client.clientSecret);
138
- if (!args.find(a => a === '--username') && 'username' in client)
139
- args.push('--username', client.username);
140
- if (!args.find(a => a === '--password') && 'password' in client)
141
- args.push('--password', client.password);
142
- }
135
+ const { cli, siteConfig } = this;
136
+ if (siteConfig) {
137
+ // Add required args
138
+ if (!args.find(a => a === '--alias'))
139
+ args.push('--alias', cli.currentEnv);
140
+ if (!args.find(a => a === '--project-api-id'))
141
+ args.push('--project-api-id', cli.currentProject);
142
+ if (!args.find(a => a === '--blocks-json'))
143
+ args.push('--blocks-json', JSON.stringify(siteConfig.blocks));
144
+ if (!args.find(a => a === '--renderers-json'))
145
+ args.push('--renderers-json', JSON.stringify(siteConfig.renderers));
146
+ }
143
147
 
144
- return args;
145
- };
148
+ const client = cli.auth?.clientDetails;
149
+ if (client) {
150
+ if (!args.find(a => a === '--client-id') && 'clientId' in client)
151
+ args.push('--client-id', client.clientId);
152
+ if (!args.find(a => a === '--client-secret') && 'clientSecret' in client)
153
+ args.push('--client-secret', client.clientSecret);
154
+ if (!args.find(a => a === '--username') && 'username' in client)
155
+ args.push('--username', client.username);
156
+ if (!args.find(a => a === '--password') && 'password' in client)
157
+ args.push('--password', client.password);
158
+ }
159
+
160
+ return args;
161
+ };
162
+
163
+ overrideBlock = (blockId: string, overrideUri: string) => {
164
+ if (blockId && blockId !== 'none') {
165
+ const blockIndex = this.siteConfig?.blocks.findIndex(
166
+ b => b.id.toLowerCase() === blockId.toLowerCase()
167
+ );
168
+ if (
169
+ typeof blockIndex === 'number' &&
170
+ !isNaN(blockIndex) &&
171
+ this.siteConfig?.blocks[blockIndex]
172
+ ) {
173
+ this.siteConfig.blocks[blockIndex].baseUri = overrideUri;
174
+ }
175
+ }
176
+ };
177
+ }
178
+
179
+ export default RequestHandlerArgs;
@@ -3,6 +3,7 @@ import Zip from 'adm-zip';
3
3
  import type { Endpoints } from '@octokit/types';
4
4
  import HttpProvider from '~/providers/HttpProvider';
5
5
  import {
6
+ addExecutePermission,
6
7
  checkDir,
7
8
  joinPath,
8
9
  removeDirectory,
@@ -37,7 +38,7 @@ class GitHubCliModuleProvider {
37
38
  this.repo = repo;
38
39
  }
39
40
 
40
- async FindLatestRelease() {
41
+ async FindLatestRelease(version?: string) {
41
42
  const { http, latest_release_url, releases_url } = this;
42
43
  // return latest tag version is:
43
44
 
@@ -55,14 +56,18 @@ class GitHubCliModuleProvider {
55
56
  throw new Error(`Unable to get releases`, { cause: releasesErr });
56
57
  } else if (!releases || releases.length === 0)
57
58
  throw new Error(`No releases available`);
58
- else if (latestErr && !latest) {
59
+ else if (version) {
60
+ const release = releases.find(
61
+ r => r.tag_name.toLowerCase() === version.toLowerCase()
62
+ );
63
+ if (release) return release;
64
+ else throw new Error(`No release for ${version} found`);
65
+ } else if (latestErr && !latest) {
59
66
  if (latestResponse?.status === 404 && releases?.length) {
60
67
  // No latest release, check releases for prerelease version, fallback to last release
61
68
  const release = releases.find(r => r.prerelease) || releases[0];
62
69
 
63
- if (release) {
64
- return release;
65
- }
70
+ if (release) return release;
66
71
  }
67
72
  } else {
68
73
  return latest;
@@ -72,10 +77,16 @@ class GitHubCliModuleProvider {
72
77
  async DownloadRelease(
73
78
  release: GitHubApiRelease,
74
79
  {
80
+ cmd,
75
81
  path,
76
82
  platforms,
77
83
  unzip = true,
78
- }: { path: string; unzip?: boolean; platforms: [NodeJS.Platform, string][] }
84
+ }: {
85
+ cmd: string;
86
+ path: string;
87
+ unzip?: boolean;
88
+ platforms: [NodeJS.Platform, string][];
89
+ }
79
90
  ) {
80
91
  // find os-specific asset
81
92
  const platform = platforms.find(p => p[0] === os.platform()) || [
@@ -102,6 +113,8 @@ class GitHubCliModuleProvider {
102
113
  // delete the downloaded zip file
103
114
  removeFile(filePath);
104
115
  }
116
+
117
+ if (os.platform() !== 'win32') addExecutePermission(joinPath(path, cmd));
105
118
  } else
106
119
  throw new Error(
107
120
  `no asset found in release ${
@@ -93,6 +93,10 @@ export const cwdPath = (filePath: string) =>
93
93
 
94
94
  export const joinPath = path.join;
95
95
 
96
+ export const addExecutePermission = (filePath: string) =>
97
+ // Fails in windows with `TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be of type number. Received undefined`
98
+ fs.chmodSync(filePath, fs.constants.S_IRWXU);
99
+
96
100
  type DetectedFileType =
97
101
  | { type: 'json'; contents: any }
98
102
  | { type: 'xml' | 'csv'; contents: string };
@@ -11,7 +11,7 @@ import { createRequestHandler } from '~/factories/RequestHandlerFactory';
11
11
  import { OutputOptionsConstructorArg } from '~/models/CliService';
12
12
  import { EnvContentsToAdd } from '~/models/DevService';
13
13
  import { mapCIWorkflowContent } from '~/mappers/DevInit-to-CIWorkflow';
14
- import { requestHandlerCliArgs } from '~/mappers/DevRequests-to-RequestHanderCliArgs';
14
+ import RequestHandlerArgs from '~/mappers/DevRequests-to-RequestHanderCliArgs';
15
15
  import { deployKeyRole } from '~/mappers/DevInit-to-RolePermissions';
16
16
  import { readFile, writeFile } from '~/providers/file-provider';
17
17
  import { diffFileContent } from '~/util/diff';
@@ -412,8 +412,9 @@ class ContensisDev extends ContensisRole {
412
412
  };
413
413
 
414
414
  ExecRequestHandler = async (
415
- blockIds: string[],
416
- overrideArgs: string[] = []
415
+ blockId: string[],
416
+ overrideArgs: string[] = [],
417
+ version?: string
417
418
  ) => {
418
419
  const { debug, log, messages } = this;
419
420
 
@@ -422,15 +423,45 @@ class ContensisDev extends ContensisRole {
422
423
  : log.info(messages.devrequests.launch());
423
424
 
424
425
  // Ensure request handler is available to use
425
- const requestHandler = await createRequestHandler();
426
+ const requestHandler = await createRequestHandler(version);
426
427
 
427
428
  // Generate args for request handler using CLI methods
429
+ const args = new RequestHandlerArgs(this);
428
430
  spinner?.start();
429
- const args = await requestHandlerCliArgs(this, overrideArgs);
431
+ await args.Create();
430
432
  spinner?.success();
431
433
 
434
+ // Prompt block id and dev uri to run locally (if not supplied)
435
+ const blockIdChoices = args.siteConfig?.blocks.map(block => block.id) || [];
436
+ blockIdChoices.push('none');
437
+ const defaultDeveloperUri = 'http://localhost:3000';
438
+
439
+ const { overrideBlockId, overrideUri } = blockId.length
440
+ ? {
441
+ overrideBlockId: blockId[0],
442
+ overrideUri: blockId?.[1] || defaultDeveloperUri,
443
+ }
444
+ : await inquirer.prompt([
445
+ {
446
+ type: 'list',
447
+ prefix: '🧱',
448
+ message: messages.devrequests.overrideBlock(),
449
+ name: 'overrideBlockId',
450
+ choices: blockIdChoices,
451
+ },
452
+ {
453
+ type: 'input',
454
+ prefix: '🔗',
455
+ message: messages.devrequests.overrideUri(),
456
+ name: 'overrideUri',
457
+ default: defaultDeveloperUri,
458
+ },
459
+ ]);
460
+
461
+ args.overrideBlock(overrideBlockId, overrideUri);
462
+
432
463
  // Launch request handler
433
- await requestHandler(args);
464
+ await requestHandler(args.getArgs(overrideArgs));
434
465
  };
435
466
  }
436
467
  export const devCommand = (
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const LIB_VERSION = "1.1.2-beta.1";
1
+ export const LIB_VERSION = "1.1.2-beta.3";