Repository navigation
Expand file tree
/
Copy pathindex.ts
More file actions
40 lines (36 loc) · 1.65 KB
/
Copy pathindex.ts
File metadata and controls
40 lines (36 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { SPComponentLoader } from '@microsoft/sp-loader';
import { CreateJsomContext, ExecuteJsomQuery, JsomContext } from "jsom-ctx";
export interface ISpfxJsomOptions {
loadPublishing?: boolean;
loadTaxonomy?: boolean;
}
export interface ISpfxJsomContext {
jsomContext: JsomContext;
defaultTermStore?: SP.Taxonomy.TermStore;
}
/**
* Initialize JSOM context for SharePoint Framework
*
* @param {string} url Url
* @param {ISpfxJsomOptions} options Options
*/
export default async function initSpxJsom(url: string, { loadPublishing, loadTaxonomy }: ISpfxJsomOptions = {}): Promise<ISpfxJsomContext> {
await SPComponentLoader.loadScript('/_layouts/15/init.js', { globalExportsName: '$_global_init' });
await SPComponentLoader.loadScript('/_layouts/15/MicrosoftAjax.js', { globalExportsName: 'Sys' });
await SPComponentLoader.loadScript('/_layouts/15/SP.Runtime.js', { globalExportsName: 'SP' });
await SPComponentLoader.loadScript('/_layouts/15/SP.js', { globalExportsName: 'SP' });
if (loadTaxonomy) {
await SPComponentLoader.loadScript('/_layouts/15/SP.Taxonomy.js', { globalExportsName: 'SP' });
}
if (loadPublishing) {
await SPComponentLoader.loadScript('/_layouts/15/SP.Publishing.js', { globalExportsName: 'SP' });
}
const jsomContext = await CreateJsomContext(url);
if (loadTaxonomy) {
const taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(jsomContext.clientContext);
const defaultTermStore = taxSession.getDefaultSiteCollectionTermStore();
return { jsomContext, defaultTermStore };
}
return { jsomContext };
}
export { ExecuteJsomQuery, JsomContext };