@pnp/cli-microsoft365 12.0.0-beta.10c5833 → 12.0.0-beta.1752794
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/.devproxy/generate-openapi-spec.json +1 -1
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/googleAnalytics.js +96 -0
- package/dist/m365/spo/commands/app/app-add.js +35 -56
- package/dist/m365/spo/commands/app/app-deploy.js +41 -59
- package/dist/m365/spo/commands/app/app-get.js +40 -56
- package/dist/m365/spo/commands/app/app-install.js +20 -41
- package/dist/m365/spo/commands/app/app-instance-list.js +12 -24
- package/dist/m365/spo/commands/app/app-list.js +26 -44
- package/dist/m365/spo/commands/app/app-remove.js +32 -52
- package/dist/m365/spo/commands/app/app-retract.js +32 -51
- package/dist/m365/spo/commands/app/app-teamspackage-download.js +35 -54
- package/dist/m365/spo/commands/app/app-uninstall.js +21 -44
- package/dist/m365/spo/commands/app/app-upgrade.js +20 -41
- package/dist/m365/spo/commands/feature/feature-disable.js +20 -50
- package/dist/m365/spo/commands/feature/feature-enable.js +22 -50
- package/dist/m365/spo/commands/feature/feature-list.js +11 -36
- package/dist/m365/spo/commands/field/field-add.js +33 -62
- package/dist/m365/spo/commands/field/field-get.js +30 -57
- package/dist/m365/spo/commands/field/field-list.js +21 -46
- package/dist/m365/spo/commands/field/field-remove.js +32 -63
- package/dist/m365/spo/commands/field/field-set.js +34 -66
- package/dist/m365/spo/commands/file/file-get.js +4 -3
- package/dist/m365/spo/commands/folder/folder-unarchive.js +90 -0
- package/dist/m365/spo/commands/hubsite/hubsite-connect.js +38 -63
- package/dist/m365/spo/commands/hubsite/hubsite-data-get.js +11 -27
- package/dist/m365/spo/commands/hubsite/hubsite-disconnect.js +25 -47
- package/dist/m365/spo/commands/hubsite/hubsite-get.js +25 -37
- package/dist/m365/spo/commands/hubsite/hubsite-list.js +12 -24
- package/dist/m365/spo/commands/hubsite/hubsite-register.js +10 -18
- package/dist/m365/spo/commands/hubsite/hubsite-rights-grant.js +14 -32
- package/dist/m365/spo/commands/hubsite/hubsite-rights-revoke.js +12 -29
- package/dist/m365/spo/commands/hubsite/hubsite-set.js +19 -46
- package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +11 -27
- package/dist/m365/spo/commands/listitem/listitem-get.js +1 -12
- package/dist/m365/spo/commands/navigation/navigation-node-list.js +6 -4
- package/dist/m365/spo/commands.js +2 -1
- package/dist/m365/teams/commands/channel/channel-add.js +46 -57
- package/dist/m365/teams/commands/channel/channel-get.js +41 -48
- package/dist/m365/teams/commands/channel/channel-list.js +28 -42
- package/dist/m365/teams/commands/channel/channel-member-add.js +53 -54
- package/dist/m365/teams/commands/channel/channel-member-list.js +47 -55
- package/dist/m365/teams/commands/channel/channel-member-remove.js +62 -62
- package/dist/m365/teams/commands/channel/channel-member-set.js +61 -65
- package/dist/m365/teams/commands/channel/channel-remove.js +47 -49
- package/dist/m365/teams/commands/channel/channel-set.js +47 -54
- package/dist/m365/teams/commands/chat/chat-get.js +30 -45
- package/dist/m365/teams/commands/chat/chat-list.js +22 -42
- package/dist/m365/teams/commands/chat/chat-member-add.js +43 -64
- package/dist/m365/teams/commands/chat/chat-member-list.js +10 -23
- package/dist/m365/teams/commands/chat/chat-member-remove.js +28 -50
- package/dist/m365/teams/commands/chat/chat-message-send.js +32 -55
- package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -28
- package/dist/telemetry.js +7 -11
- package/dist/utils/spo.js +1 -3
- package/dist/utils/urlUtil.js +2 -2
- package/docs/docs/cmd/spo/file/file-archive.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-checkin.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-checkout.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-copy.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-get.mdx +6 -6
- package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +3 -3
- package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-sharinglink-add.mdx +22 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-clear.mdx +24 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-get.mdx +22 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-list.mdx +22 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-remove.mdx +24 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-set.mdx +22 -1
- package/docs/docs/cmd/spo/file/file-unarchive.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-clear.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-get.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-keep.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-list.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-remove.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-version-restore.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-archive.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-copy.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-get.mdx +2 -2
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-sharinglink-add.mdx +22 -1
- package/docs/docs/cmd/spo/folder/folder-sharinglink-clear.mdx +23 -0
- package/docs/docs/cmd/spo/folder/folder-sharinglink-get.mdx +21 -0
- package/docs/docs/cmd/spo/folder/folder-sharinglink-list.mdx +22 -1
- package/docs/docs/cmd/spo/folder/folder-sharinglink-remove.mdx +24 -1
- package/docs/docs/cmd/spo/folder/folder-sharinglink-set.mdx +21 -0
- package/docs/docs/cmd/spo/folder/folder-unarchive.mdx +76 -0
- package/docs/docs/cmd/spo/listitem/listitem-get.mdx +0 -6
- package/docs/docs/cmd/spo/navigation/navigation-node-list.mdx +37 -27
- package/docs/docs/cmd/spp/model/model-get.mdx +1 -1
- package/docs/docs/cmd/spp/model/model-remove.mdx +1 -1
- package/npm-shrinkwrap.json +702 -3230
- package/package.json +18 -33
- package/dist/appInsights.js +0 -43
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import Axios from 'axios';
|
|
2
|
+
import Configstore from 'configstore';
|
|
3
|
+
import crypto from 'crypto';
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import os from 'os';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import url from 'url';
|
|
8
|
+
import config from './config.js';
|
|
9
|
+
import { app } from './utils/app.js';
|
|
10
|
+
const measurementId = 'G-4BNT8MQCYT';
|
|
11
|
+
const apiSecret = 'mm_3WD_TRuO-9MKsuZnhDQ';
|
|
12
|
+
const endpoint = 'https://www.google-analytics.com/mp/collect';
|
|
13
|
+
const clientIdSetting = 'telemetryClientId';
|
|
14
|
+
const requestTimeout = 3000;
|
|
15
|
+
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
16
|
+
const commonProperties = {
|
|
17
|
+
version: `${app.packageJson().version}${fs.existsSync(path.join(__dirname, `..${path.sep}src`)) ? '-dev' : ''}`,
|
|
18
|
+
node: process.version,
|
|
19
|
+
os: os.platform(),
|
|
20
|
+
env: process.env.CLIMICROSOFT365_ENV ?? '',
|
|
21
|
+
ci: Boolean(process.env.CI).toString()
|
|
22
|
+
};
|
|
23
|
+
function getClientId() {
|
|
24
|
+
const store = new Configstore(config.configstoreName);
|
|
25
|
+
let clientId = store.get(clientIdSetting);
|
|
26
|
+
if (!clientId) {
|
|
27
|
+
clientId = crypto.randomUUID();
|
|
28
|
+
store.set(clientIdSetting, clientId);
|
|
29
|
+
}
|
|
30
|
+
return clientId;
|
|
31
|
+
}
|
|
32
|
+
function getSessionId(sessionId) {
|
|
33
|
+
return parseInt(crypto.createHash('sha256').update(sessionId).digest('hex').substring(0, 12), 16);
|
|
34
|
+
}
|
|
35
|
+
function toEventValue(value) {
|
|
36
|
+
if (typeof value === 'number') {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
return String(value);
|
|
40
|
+
}
|
|
41
|
+
function getEvents(commandName, properties, context) {
|
|
42
|
+
const sessionId = getSessionId(context.sessionId);
|
|
43
|
+
const eventProperties = Object.entries(properties).reduce((result, [name, value]) => {
|
|
44
|
+
if (typeof value !== 'undefined') {
|
|
45
|
+
result[name] = toEventValue(value);
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}, {});
|
|
49
|
+
return [{
|
|
50
|
+
name: 'command_used',
|
|
51
|
+
params: {
|
|
52
|
+
['command_name']: commandName,
|
|
53
|
+
...commonProperties,
|
|
54
|
+
shell: context.shell,
|
|
55
|
+
...eventProperties,
|
|
56
|
+
['session_id']: sessionId,
|
|
57
|
+
['engagement_time_msec']: 1
|
|
58
|
+
}
|
|
59
|
+
}];
|
|
60
|
+
}
|
|
61
|
+
async function sendEvents(events) {
|
|
62
|
+
const clientId = getClientId();
|
|
63
|
+
const response = await Axios.post(`${endpoint}?measurement_id=${measurementId}&api_secret=${apiSecret}`, {
|
|
64
|
+
['client_id']: clientId,
|
|
65
|
+
events
|
|
66
|
+
}, {
|
|
67
|
+
headers: {
|
|
68
|
+
'Content-Type': 'application/json'
|
|
69
|
+
},
|
|
70
|
+
timeout: requestTimeout,
|
|
71
|
+
validateStatus: () => true
|
|
72
|
+
});
|
|
73
|
+
if (response.status < 200 || response.status >= 300) {
|
|
74
|
+
throw new Error(`Google Analytics returned ${response.status}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export const googleAnalytics = {
|
|
78
|
+
commonProperties,
|
|
79
|
+
trackEvent: async (commandName, properties, context) => {
|
|
80
|
+
await sendEvents(getEvents(commandName, properties, context));
|
|
81
|
+
},
|
|
82
|
+
trackException: async (exception, context) => {
|
|
83
|
+
const description = exception instanceof Error ? exception.message : String(exception);
|
|
84
|
+
await sendEvents([{
|
|
85
|
+
name: 'exception',
|
|
86
|
+
params: {
|
|
87
|
+
description: description.substring(0, 100),
|
|
88
|
+
...commonProperties,
|
|
89
|
+
shell: context.shell,
|
|
90
|
+
['session_id']: getSessionId(context.sessionId),
|
|
91
|
+
['engagement_time_msec']: 1
|
|
92
|
+
}
|
|
93
|
+
}]);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=googleAnalytics.js.map
|
|
@@ -1,17 +1,34 @@
|
|
|
1
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _SpoAppAddCommand_instances, _SpoAppAddCommand_initTelemetry, _SpoAppAddCommand_initOptions, _SpoAppAddCommand_initValidators;
|
|
7
1
|
import fs from 'fs';
|
|
8
2
|
import path from 'path';
|
|
3
|
+
import { z } from 'zod';
|
|
9
4
|
import { cli } from '../../../../cli/cli.js';
|
|
5
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
10
6
|
import request from '../../../../request.js';
|
|
11
7
|
import { spo } from '../../../../utils/spo.js';
|
|
12
8
|
import { validation } from '../../../../utils/validation.js';
|
|
9
|
+
import { zod } from '../../../../utils/zod.js';
|
|
13
10
|
import commands from '../../commands.js';
|
|
14
11
|
import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
|
|
12
|
+
export const options = z.strictObject({
|
|
13
|
+
...globalOptionsZod.shape,
|
|
14
|
+
filePath: z.string()
|
|
15
|
+
.refine(filePath => fs.existsSync(path.resolve(filePath)), {
|
|
16
|
+
error: e => `File '${path.resolve(e.input)}' not found`,
|
|
17
|
+
abort: true
|
|
18
|
+
})
|
|
19
|
+
.refine(filePath => !fs.lstatSync(path.resolve(filePath)).isDirectory(), {
|
|
20
|
+
error: e => `Path '${path.resolve(e.input)}' points to a directory`
|
|
21
|
+
})
|
|
22
|
+
.alias('p'),
|
|
23
|
+
overwrite: z.boolean().optional(),
|
|
24
|
+
appCatalogScope: zod.coercedEnum({ tenant: 'tenant', sitecollection: 'sitecollection' }).optional().alias('s'),
|
|
25
|
+
appCatalogUrl: z.string()
|
|
26
|
+
.refine(url => validation.isValidSharePointUrl(url) === true, {
|
|
27
|
+
error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
|
|
28
|
+
})
|
|
29
|
+
.optional()
|
|
30
|
+
.alias('u')
|
|
31
|
+
});
|
|
15
32
|
class SpoAppAddCommand extends SpoAppBaseCommand {
|
|
16
33
|
get name() {
|
|
17
34
|
return commands.APP_ADD;
|
|
@@ -19,13 +36,18 @@ class SpoAppAddCommand extends SpoAppBaseCommand {
|
|
|
19
36
|
get description() {
|
|
20
37
|
return 'Adds an app to the specified SharePoint Online app catalog';
|
|
21
38
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
39
|
+
get schema() {
|
|
40
|
+
return options;
|
|
41
|
+
}
|
|
42
|
+
getRefinedSchema(schema) {
|
|
43
|
+
return schema
|
|
44
|
+
.refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
|
|
45
|
+
error: 'You must specify appCatalogUrl when appCatalogScope is sitecollection',
|
|
46
|
+
path: ['appCatalogUrl'],
|
|
47
|
+
params: {
|
|
48
|
+
customCode: 'required'
|
|
49
|
+
}
|
|
50
|
+
});
|
|
29
51
|
}
|
|
30
52
|
async commandAction(logger, args) {
|
|
31
53
|
const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
|
|
@@ -60,48 +82,5 @@ class SpoAppAddCommand extends SpoAppBaseCommand {
|
|
|
60
82
|
}
|
|
61
83
|
}
|
|
62
84
|
}
|
|
63
|
-
_SpoAppAddCommand_instances = new WeakSet(), _SpoAppAddCommand_initTelemetry = function _SpoAppAddCommand_initTelemetry() {
|
|
64
|
-
this.telemetry.push((args) => {
|
|
65
|
-
Object.assign(this.telemetryProperties, {
|
|
66
|
-
overwrite: !!args.options.overwrite,
|
|
67
|
-
appCatalogScope: args.options.appCatalogScope || 'tenant',
|
|
68
|
-
appCatalogUrl: typeof args.options.appCatalogUrl !== 'undefined'
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
}, _SpoAppAddCommand_initOptions = function _SpoAppAddCommand_initOptions() {
|
|
72
|
-
this.options.unshift({
|
|
73
|
-
option: '-p, --filePath <filePath>'
|
|
74
|
-
}, {
|
|
75
|
-
option: '-s, --appCatalogScope [appCatalogScope]',
|
|
76
|
-
autocomplete: this.appCatalogScopeOptions
|
|
77
|
-
}, {
|
|
78
|
-
option: '-u, --appCatalogUrl [appCatalogUrl]'
|
|
79
|
-
}, {
|
|
80
|
-
option: '--overwrite [overwrite]'
|
|
81
|
-
});
|
|
82
|
-
}, _SpoAppAddCommand_initValidators = function _SpoAppAddCommand_initValidators() {
|
|
83
|
-
this.validators.push(async (args) => {
|
|
84
|
-
if (args.options.appCatalogScope) {
|
|
85
|
-
const appCatalogScope = args.options.appCatalogScope.toLowerCase();
|
|
86
|
-
if (this.appCatalogScopeOptions.indexOf(appCatalogScope) === -1) {
|
|
87
|
-
return `${args.options.appCatalogScope} is not a valid appCatalogScope. Allowed values are: ${this.appCatalogScopeOptions.join(', ')}`;
|
|
88
|
-
}
|
|
89
|
-
if (appCatalogScope === 'sitecollection' && !args.options.appCatalogUrl) {
|
|
90
|
-
return `You must specify appCatalogUrl when appCatalogScope is sitecollection`;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const fullPath = path.resolve(args.options.filePath);
|
|
94
|
-
if (!fs.existsSync(fullPath)) {
|
|
95
|
-
return `File '${fullPath}' not found`;
|
|
96
|
-
}
|
|
97
|
-
if (fs.lstatSync(fullPath).isDirectory()) {
|
|
98
|
-
return `Path '${fullPath}' points to a directory`;
|
|
99
|
-
}
|
|
100
|
-
if (args.options.appCatalogUrl) {
|
|
101
|
-
return validation.isValidSharePointUrl(args.options.appCatalogUrl);
|
|
102
|
-
}
|
|
103
|
-
return true;
|
|
104
|
-
});
|
|
105
|
-
};
|
|
106
85
|
export default new SpoAppAddCommand();
|
|
107
86
|
//# sourceMappingURL=app-add.js.map
|
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _SpoAppDeployCommand_instances, _SpoAppDeployCommand_initTelemetry, _SpoAppDeployCommand_initOptions, _SpoAppDeployCommand_initValidators, _SpoAppDeployCommand_initOptionSets;
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
7
3
|
import request from '../../../../request.js';
|
|
8
4
|
import { spo } from '../../../../utils/spo.js';
|
|
9
5
|
import { validation } from '../../../../utils/validation.js';
|
|
6
|
+
import { zod } from '../../../../utils/zod.js';
|
|
10
7
|
import commands from '../../commands.js';
|
|
11
8
|
import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
|
|
9
|
+
const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
|
|
10
|
+
export const options = z.strictObject({
|
|
11
|
+
...globalOptionsZod.shape,
|
|
12
|
+
id: z.string()
|
|
13
|
+
.refine(id => validation.isValidGuid(id), {
|
|
14
|
+
error: e => `${e.input} is not a valid GUID`
|
|
15
|
+
})
|
|
16
|
+
.optional()
|
|
17
|
+
.alias('i'),
|
|
18
|
+
name: z.string().optional().alias('n'),
|
|
19
|
+
appCatalogUrl: z.string()
|
|
20
|
+
.refine(url => validation.isValidSharePointUrl(url) === true, {
|
|
21
|
+
error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
|
|
22
|
+
})
|
|
23
|
+
.optional()
|
|
24
|
+
.alias('u'),
|
|
25
|
+
skipFeatureDeployment: z.boolean().optional(),
|
|
26
|
+
appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional().alias('s')
|
|
27
|
+
});
|
|
12
28
|
class SpoAppDeployCommand extends SpoAppBaseCommand {
|
|
13
29
|
get name() {
|
|
14
30
|
return commands.APP_DEPLOY;
|
|
@@ -16,13 +32,25 @@ class SpoAppDeployCommand extends SpoAppBaseCommand {
|
|
|
16
32
|
get description() {
|
|
17
33
|
return 'Deploys the specified app in the specified app catalog';
|
|
18
34
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
35
|
+
get schema() {
|
|
36
|
+
return options;
|
|
37
|
+
}
|
|
38
|
+
getRefinedSchema(schema) {
|
|
39
|
+
return schema
|
|
40
|
+
.refine(opts => [opts.id, opts.name].filter(x => x !== undefined).length === 1, {
|
|
41
|
+
error: `Specify either 'id' or 'name', but not both.`,
|
|
42
|
+
params: {
|
|
43
|
+
customCode: 'optionSet',
|
|
44
|
+
options: ['id', 'name']
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
.refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
|
|
48
|
+
error: 'You must specify appCatalogUrl when the appCatalogScope is sitecollection',
|
|
49
|
+
path: ['appCatalogUrl'],
|
|
50
|
+
params: {
|
|
51
|
+
customCode: 'required'
|
|
52
|
+
}
|
|
53
|
+
});
|
|
26
54
|
}
|
|
27
55
|
async commandAction(logger, args) {
|
|
28
56
|
const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
|
|
@@ -69,51 +97,5 @@ class SpoAppDeployCommand extends SpoAppBaseCommand {
|
|
|
69
97
|
}
|
|
70
98
|
}
|
|
71
99
|
}
|
|
72
|
-
_SpoAppDeployCommand_instances = new WeakSet(), _SpoAppDeployCommand_initTelemetry = function _SpoAppDeployCommand_initTelemetry() {
|
|
73
|
-
this.telemetry.push((args) => {
|
|
74
|
-
Object.assign(this.telemetryProperties, {
|
|
75
|
-
id: (!(!args.options.id)).toString(),
|
|
76
|
-
name: (!(!args.options.name)).toString(),
|
|
77
|
-
appCatalogUrl: (!(!args.options.appCatalogUrl)).toString(),
|
|
78
|
-
skipFeatureDeployment: args.options.skipFeatureDeployment || false,
|
|
79
|
-
appCatalogScope: (!(!args.options.appCatalogScope)).toString()
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
}, _SpoAppDeployCommand_initOptions = function _SpoAppDeployCommand_initOptions() {
|
|
83
|
-
this.options.unshift({
|
|
84
|
-
option: '-i, --id [id]'
|
|
85
|
-
}, {
|
|
86
|
-
option: '-n, --name [name]'
|
|
87
|
-
}, {
|
|
88
|
-
option: '-u, --appCatalogUrl [appCatalogUrl]'
|
|
89
|
-
}, {
|
|
90
|
-
option: '--skipFeatureDeployment'
|
|
91
|
-
}, {
|
|
92
|
-
option: '-s, --appCatalogScope [appCatalogScope]',
|
|
93
|
-
autocomplete: ['tenant', 'sitecollection']
|
|
94
|
-
});
|
|
95
|
-
}, _SpoAppDeployCommand_initValidators = function _SpoAppDeployCommand_initValidators() {
|
|
96
|
-
this.validators.push(async (args) => {
|
|
97
|
-
// verify either 'tenant' or 'sitecollection' specified if scope provided
|
|
98
|
-
if (args.options.appCatalogScope) {
|
|
99
|
-
const testScope = args.options.appCatalogScope.toLowerCase();
|
|
100
|
-
if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
|
|
101
|
-
return `appCatalogScope must be either 'tenant' or 'sitecollection'`;
|
|
102
|
-
}
|
|
103
|
-
if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
|
|
104
|
-
return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
if (args.options.id && !validation.isValidGuid(args.options.id)) {
|
|
108
|
-
return `${args.options.id} is not a valid GUID`;
|
|
109
|
-
}
|
|
110
|
-
if (args.options.appCatalogUrl) {
|
|
111
|
-
return validation.isValidSharePointUrl(args.options.appCatalogUrl);
|
|
112
|
-
}
|
|
113
|
-
return true;
|
|
114
|
-
});
|
|
115
|
-
}, _SpoAppDeployCommand_initOptionSets = function _SpoAppDeployCommand_initOptionSets() {
|
|
116
|
-
this.optionSets.push({ options: ['id', 'name'] });
|
|
117
|
-
};
|
|
118
100
|
export default new SpoAppDeployCommand();
|
|
119
101
|
//# sourceMappingURL=app-deploy.js.map
|
|
@@ -1,15 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _SpoAppGetCommand_instances, _SpoAppGetCommand_initTelemetry, _SpoAppGetCommand_initOptions, _SpoAppGetCommand_initValidators, _SpoAppGetCommand_initOptionSets;
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
7
3
|
import request from '../../../../request.js';
|
|
8
4
|
import { formatting } from '../../../../utils/formatting.js';
|
|
9
5
|
import { spo } from '../../../../utils/spo.js';
|
|
10
6
|
import { validation } from '../../../../utils/validation.js';
|
|
7
|
+
import { zod } from '../../../../utils/zod.js';
|
|
11
8
|
import commands from '../../commands.js';
|
|
12
9
|
import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
|
|
10
|
+
const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
|
|
11
|
+
export const options = z.strictObject({
|
|
12
|
+
...globalOptionsZod.shape,
|
|
13
|
+
id: z.string()
|
|
14
|
+
.refine(id => validation.isValidGuid(id), {
|
|
15
|
+
error: e => `${e.input} is not a valid GUID`
|
|
16
|
+
})
|
|
17
|
+
.optional()
|
|
18
|
+
.alias('i'),
|
|
19
|
+
name: z.string().optional().alias('n'),
|
|
20
|
+
appCatalogUrl: z.string()
|
|
21
|
+
.refine(url => validation.isValidSharePointUrl(url) === true, {
|
|
22
|
+
error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
|
|
23
|
+
})
|
|
24
|
+
.optional()
|
|
25
|
+
.alias('u'),
|
|
26
|
+
appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional().alias('s')
|
|
27
|
+
});
|
|
13
28
|
class SpoAppGetCommand extends SpoAppBaseCommand {
|
|
14
29
|
get name() {
|
|
15
30
|
return commands.APP_GET;
|
|
@@ -17,13 +32,25 @@ class SpoAppGetCommand extends SpoAppBaseCommand {
|
|
|
17
32
|
get description() {
|
|
18
33
|
return 'Gets information about the specific app from the specified app catalog';
|
|
19
34
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
35
|
+
get schema() {
|
|
36
|
+
return options;
|
|
37
|
+
}
|
|
38
|
+
getRefinedSchema(schema) {
|
|
39
|
+
return schema
|
|
40
|
+
.refine(opts => [opts.id, opts.name].filter(x => x !== undefined).length === 1, {
|
|
41
|
+
error: `Specify either 'id' or 'name', but not both.`,
|
|
42
|
+
params: {
|
|
43
|
+
customCode: 'optionSet',
|
|
44
|
+
options: ['id', 'name']
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
.refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
|
|
48
|
+
error: 'You must specify appCatalogUrl when the appCatalogScope is sitecollection',
|
|
49
|
+
path: ['appCatalogUrl'],
|
|
50
|
+
params: {
|
|
51
|
+
customCode: 'required'
|
|
52
|
+
}
|
|
53
|
+
});
|
|
27
54
|
}
|
|
28
55
|
async commandAction(logger, args) {
|
|
29
56
|
try {
|
|
@@ -66,48 +93,5 @@ class SpoAppGetCommand extends SpoAppBaseCommand {
|
|
|
66
93
|
}
|
|
67
94
|
}
|
|
68
95
|
}
|
|
69
|
-
_SpoAppGetCommand_instances = new WeakSet(), _SpoAppGetCommand_initTelemetry = function _SpoAppGetCommand_initTelemetry() {
|
|
70
|
-
this.telemetry.push((args) => {
|
|
71
|
-
Object.assign(this.telemetryProperties, {
|
|
72
|
-
id: (!(!args.options.id)).toString(),
|
|
73
|
-
name: (!(!args.options.name)).toString(),
|
|
74
|
-
appCatalogUrl: (!(!args.options.appCatalogUrl)).toString(),
|
|
75
|
-
appCatalogScope: args.options.appCatalogScope || 'tenant'
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
}, _SpoAppGetCommand_initOptions = function _SpoAppGetCommand_initOptions() {
|
|
79
|
-
this.options.unshift({
|
|
80
|
-
option: '-i, --id [id]'
|
|
81
|
-
}, {
|
|
82
|
-
option: '-n, --name [name]'
|
|
83
|
-
}, {
|
|
84
|
-
option: '-u, --appCatalogUrl [appCatalogUrl]'
|
|
85
|
-
}, {
|
|
86
|
-
option: '-s, --appCatalogScope [appCatalogScope]',
|
|
87
|
-
autocomplete: ['tenant', 'sitecollection']
|
|
88
|
-
});
|
|
89
|
-
}, _SpoAppGetCommand_initValidators = function _SpoAppGetCommand_initValidators() {
|
|
90
|
-
this.validators.push(async (args) => {
|
|
91
|
-
// verify either 'tenant' or 'sitecollection' specified if scope provided
|
|
92
|
-
if (args.options.appCatalogScope) {
|
|
93
|
-
const testScope = args.options.appCatalogScope.toLowerCase();
|
|
94
|
-
if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
|
|
95
|
-
return `appCatalogScope must be either 'tenant' or 'sitecollection'`;
|
|
96
|
-
}
|
|
97
|
-
if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
|
|
98
|
-
return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (args.options.id && !validation.isValidGuid(args.options.id)) {
|
|
102
|
-
return `${args.options.id} is not a valid GUID`;
|
|
103
|
-
}
|
|
104
|
-
if (args.options.appCatalogUrl) {
|
|
105
|
-
return validation.isValidSharePointUrl(args.options.appCatalogUrl);
|
|
106
|
-
}
|
|
107
|
-
return true;
|
|
108
|
-
});
|
|
109
|
-
}, _SpoAppGetCommand_initOptionSets = function _SpoAppGetCommand_initOptionSets() {
|
|
110
|
-
this.optionSets.push({ options: ['id', 'name'] });
|
|
111
|
-
};
|
|
112
96
|
export default new SpoAppGetCommand();
|
|
113
97
|
//# sourceMappingURL=app-get.js.map
|
|
@@ -1,14 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _SpoAppInstallCommand_instances, _SpoAppInstallCommand_initTelemetry, _SpoAppInstallCommand_initOptions, _SpoAppInstallCommand_initValidators;
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
7
3
|
import request from '../../../../request.js';
|
|
8
4
|
import { formatting } from '../../../../utils/formatting.js';
|
|
9
5
|
import { validation } from '../../../../utils/validation.js';
|
|
6
|
+
import { zod } from '../../../../utils/zod.js';
|
|
10
7
|
import SpoCommand from '../../../base/SpoCommand.js';
|
|
11
8
|
import commands from '../../commands.js';
|
|
9
|
+
const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
|
|
10
|
+
export const options = z.strictObject({
|
|
11
|
+
...globalOptionsZod.shape,
|
|
12
|
+
id: z.string()
|
|
13
|
+
.refine(id => validation.isValidGuid(id), {
|
|
14
|
+
error: e => `${e.input} is not a valid GUID`
|
|
15
|
+
})
|
|
16
|
+
.alias('i'),
|
|
17
|
+
siteUrl: z.string()
|
|
18
|
+
.refine(url => validation.isValidSharePointUrl(url) === true, {
|
|
19
|
+
error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
|
|
20
|
+
})
|
|
21
|
+
.alias('s'),
|
|
22
|
+
appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional()
|
|
23
|
+
});
|
|
12
24
|
class SpoAppInstallCommand extends SpoCommand {
|
|
13
25
|
get name() {
|
|
14
26
|
return commands.APP_INSTALL;
|
|
@@ -16,12 +28,8 @@ class SpoAppInstallCommand extends SpoCommand {
|
|
|
16
28
|
get description() {
|
|
17
29
|
return 'Installs an app from the specified app catalog in the site';
|
|
18
30
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
_SpoAppInstallCommand_instances.add(this);
|
|
22
|
-
__classPrivateFieldGet(this, _SpoAppInstallCommand_instances, "m", _SpoAppInstallCommand_initTelemetry).call(this);
|
|
23
|
-
__classPrivateFieldGet(this, _SpoAppInstallCommand_instances, "m", _SpoAppInstallCommand_initOptions).call(this);
|
|
24
|
-
__classPrivateFieldGet(this, _SpoAppInstallCommand_instances, "m", _SpoAppInstallCommand_initValidators).call(this);
|
|
31
|
+
get schema() {
|
|
32
|
+
return options;
|
|
25
33
|
}
|
|
26
34
|
async commandAction(logger, args) {
|
|
27
35
|
const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
|
|
@@ -42,34 +50,5 @@ class SpoAppInstallCommand extends SpoCommand {
|
|
|
42
50
|
}
|
|
43
51
|
}
|
|
44
52
|
}
|
|
45
|
-
_SpoAppInstallCommand_instances = new WeakSet(), _SpoAppInstallCommand_initTelemetry = function _SpoAppInstallCommand_initTelemetry() {
|
|
46
|
-
this.telemetry.push((args) => {
|
|
47
|
-
Object.assign(this.telemetryProperties, {
|
|
48
|
-
appCatalogScope: args.options.appCatalogScope || 'tenant'
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
}, _SpoAppInstallCommand_initOptions = function _SpoAppInstallCommand_initOptions() {
|
|
52
|
-
this.options.unshift({
|
|
53
|
-
option: '-i, --id <id>'
|
|
54
|
-
}, {
|
|
55
|
-
option: '-s, --siteUrl <siteUrl>'
|
|
56
|
-
}, {
|
|
57
|
-
option: '--appCatalogScope [appCatalogScope]',
|
|
58
|
-
autocomplete: ['tenant', 'sitecollection']
|
|
59
|
-
});
|
|
60
|
-
}, _SpoAppInstallCommand_initValidators = function _SpoAppInstallCommand_initValidators() {
|
|
61
|
-
this.validators.push(async (args) => {
|
|
62
|
-
if (args.options.appCatalogScope) {
|
|
63
|
-
const testScope = args.options.appCatalogScope.toLowerCase();
|
|
64
|
-
if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
|
|
65
|
-
return `appCatalogScope must be either 'tenant' or 'sitecollection' if specified`;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (!validation.isValidGuid(args.options.id)) {
|
|
69
|
-
return `${args.options.id} is not a valid GUID`;
|
|
70
|
-
}
|
|
71
|
-
return validation.isValidSharePointUrl(args.options.siteUrl);
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
53
|
export default new SpoAppInstallCommand();
|
|
75
54
|
//# sourceMappingURL=app-install.js.map
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
-
};
|
|
6
|
-
var _SpoAppInStanceListCommand_instances, _SpoAppInStanceListCommand_initOptions, _SpoAppInStanceListCommand_initValidators;
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
7
3
|
import { odata } from '../../../../utils/odata.js';
|
|
8
4
|
import { validation } from '../../../../utils/validation.js';
|
|
9
5
|
import commands from '../../commands.js';
|
|
10
6
|
import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
|
|
7
|
+
export const options = z.strictObject({
|
|
8
|
+
...globalOptionsZod.shape,
|
|
9
|
+
siteUrl: z.string()
|
|
10
|
+
.refine(url => validation.isValidSharePointUrl(url) === true, {
|
|
11
|
+
error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
|
|
12
|
+
})
|
|
13
|
+
.alias('u')
|
|
14
|
+
});
|
|
11
15
|
class SpoAppInStanceListCommand extends SpoAppBaseCommand {
|
|
12
16
|
get name() {
|
|
13
17
|
return commands.APP_INSTANCE_LIST;
|
|
@@ -18,11 +22,8 @@ class SpoAppInStanceListCommand extends SpoAppBaseCommand {
|
|
|
18
22
|
defaultProperties() {
|
|
19
23
|
return [`Title`, `AppId`];
|
|
20
24
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
_SpoAppInStanceListCommand_instances.add(this);
|
|
24
|
-
__classPrivateFieldGet(this, _SpoAppInStanceListCommand_instances, "m", _SpoAppInStanceListCommand_initOptions).call(this);
|
|
25
|
-
__classPrivateFieldGet(this, _SpoAppInStanceListCommand_instances, "m", _SpoAppInStanceListCommand_initValidators).call(this);
|
|
25
|
+
get schema() {
|
|
26
|
+
return options;
|
|
26
27
|
}
|
|
27
28
|
async commandAction(logger, args) {
|
|
28
29
|
if (this.verbose) {
|
|
@@ -37,18 +38,5 @@ class SpoAppInStanceListCommand extends SpoAppBaseCommand {
|
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
|
-
_SpoAppInStanceListCommand_instances = new WeakSet(), _SpoAppInStanceListCommand_initOptions = function _SpoAppInStanceListCommand_initOptions() {
|
|
41
|
-
this.options.unshift({
|
|
42
|
-
option: '-u, --siteUrl <siteUrl>'
|
|
43
|
-
});
|
|
44
|
-
}, _SpoAppInStanceListCommand_initValidators = function _SpoAppInStanceListCommand_initValidators() {
|
|
45
|
-
this.validators.push(async (args) => {
|
|
46
|
-
const isValidSharePointUrl = validation.isValidSharePointUrl(args.options.siteUrl);
|
|
47
|
-
if (isValidSharePointUrl !== true) {
|
|
48
|
-
return isValidSharePointUrl;
|
|
49
|
-
}
|
|
50
|
-
return true;
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
41
|
export default new SpoAppInStanceListCommand();
|
|
54
42
|
//# sourceMappingURL=app-instance-list.js.map
|