@vendure/ui-devkit 1.2.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/LICENSE +9 -0
- package/README.md +5 -0
- package/client/devkit-client-api.d.ts +51 -0
- package/client/index.d.ts +1 -0
- package/client/index.js +1 -0
- package/compiler/compile.d.ts +9 -0
- package/compiler/compile.js +218 -0
- package/compiler/compile.js.map +1 -0
- package/compiler/constants.d.ts +6 -0
- package/compiler/constants.js +10 -0
- package/compiler/constants.js.map +1 -0
- package/compiler/helpers.d.ts +23 -0
- package/compiler/helpers.js +48 -0
- package/compiler/helpers.js.map +1 -0
- package/compiler/index.d.ts +3 -0
- package/compiler/index.js +16 -0
- package/compiler/index.js.map +1 -0
- package/compiler/scaffold.d.ts +3 -0
- package/compiler/scaffold.js +219 -0
- package/compiler/scaffold.js.map +1 -0
- package/compiler/translations.d.ts +12 -0
- package/compiler/translations.js +136 -0
- package/compiler/translations.js.map +1 -0
- package/compiler/types.d.ts +219 -0
- package/compiler/types.js +3 -0
- package/compiler/types.js.map +1 -0
- package/compiler/utils.d.ts +33 -0
- package/compiler/utils.js +125 -0
- package/compiler/utils.js.map +1 -0
- package/package.json +64 -0
- package/scaffold/README.md +7 -0
- package/scaffold/angular.json +119 -0
- package/scaffold/package.json +11 -0
- package/scaffold/src/app.module.ts +19 -0
- package/scaffold/src/app.routes.ts +49 -0
- package/scaffold/src/environment.prod.ts +3 -0
- package/scaffold/src/environment.ts +6 -0
- package/scaffold/src/extension.routes.ts +1 -0
- package/scaffold/src/global-styles.scss +1 -0
- package/scaffold/src/main.ts +17 -0
- package/scaffold/src/shared-extensions.module.ts +7 -0
- package/scaffold/src/tsconfig.app.json +18 -0
- package/scaffold/tsconfig.json +26 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/compiler/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LanguageCode } from '@vendure/common/lib/generated-types';
|
|
2
|
+
import { TranslationExtension } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Given an array of extensions, returns a map of languageCode to all files specified by the
|
|
5
|
+
* configured globs.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getAllTranslationFiles(extensions: TranslationExtension[]): {
|
|
8
|
+
[languageCode in LanguageCode]?: string[];
|
|
9
|
+
};
|
|
10
|
+
export declare function mergeExtensionTranslations(outputPath: string, translationFiles: {
|
|
11
|
+
[languageCode in LanguageCode]?: string[];
|
|
12
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.mergeExtensionTranslations = exports.getAllTranslationFiles = void 0;
|
|
26
|
+
const fs = __importStar(require("fs-extra"));
|
|
27
|
+
const glob_1 = __importDefault(require("glob"));
|
|
28
|
+
const path = __importStar(require("path"));
|
|
29
|
+
const utils_1 = require("./utils");
|
|
30
|
+
/**
|
|
31
|
+
* Given an array of extensions, returns a map of languageCode to all files specified by the
|
|
32
|
+
* configured globs.
|
|
33
|
+
*/
|
|
34
|
+
function getAllTranslationFiles(extensions) {
|
|
35
|
+
// First collect all globs by language
|
|
36
|
+
const allTranslationsWithGlobs = {};
|
|
37
|
+
for (const extension of extensions) {
|
|
38
|
+
for (const [languageCode, globPattern] of Object.entries(extension.translations || {})) {
|
|
39
|
+
const code = languageCode;
|
|
40
|
+
if (globPattern) {
|
|
41
|
+
if (!allTranslationsWithGlobs[code]) {
|
|
42
|
+
allTranslationsWithGlobs[code] = [globPattern];
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
46
|
+
allTranslationsWithGlobs[code].push(globPattern);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const allTranslationsWithFiles = {};
|
|
52
|
+
for (const [languageCode, globs] of Object.entries(allTranslationsWithGlobs)) {
|
|
53
|
+
const code = languageCode;
|
|
54
|
+
allTranslationsWithFiles[code] = [];
|
|
55
|
+
if (!globs) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
for (const pattern of globs) {
|
|
59
|
+
const files = glob_1.default.sync(pattern);
|
|
60
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
61
|
+
allTranslationsWithFiles[code].push(...files);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return allTranslationsWithFiles;
|
|
65
|
+
}
|
|
66
|
+
exports.getAllTranslationFiles = getAllTranslationFiles;
|
|
67
|
+
async function mergeExtensionTranslations(outputPath, translationFiles) {
|
|
68
|
+
// Now merge them into the final language-speicific json files
|
|
69
|
+
const i18nMessagesDir = path.join(outputPath, 'src/i18n-messages');
|
|
70
|
+
for (const [languageCode, files] of Object.entries(translationFiles)) {
|
|
71
|
+
if (!files) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const translationFile = path.join(i18nMessagesDir, `${languageCode}.json`);
|
|
75
|
+
const translationBackupFile = path.join(i18nMessagesDir, `${languageCode}.json.bak`);
|
|
76
|
+
if (fs.existsSync(translationBackupFile)) {
|
|
77
|
+
// restore the original translations from the backup
|
|
78
|
+
await fs.copy(translationBackupFile, translationFile);
|
|
79
|
+
}
|
|
80
|
+
let translations = {};
|
|
81
|
+
if (fs.existsSync(translationFile)) {
|
|
82
|
+
// create a backup of the original (unextended) translations
|
|
83
|
+
await fs.copy(translationFile, translationBackupFile);
|
|
84
|
+
try {
|
|
85
|
+
translations = await fs.readJson(translationFile);
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
utils_1.logger.error(`Could not load translation file: ${translationFile}`);
|
|
89
|
+
utils_1.logger.error(e);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
for (const file of files) {
|
|
93
|
+
try {
|
|
94
|
+
const contents = await fs.readJson(file);
|
|
95
|
+
translations = mergeTranslations(translations, contents);
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
utils_1.logger.error(`Could not load translation file: ${translationFile}`);
|
|
99
|
+
utils_1.logger.error(e);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// write the final translation files to disk
|
|
103
|
+
const sortedTranslations = sortTranslationKeys(translations);
|
|
104
|
+
await fs.writeFile(translationFile, JSON.stringify(sortedTranslations, null, 2), 'utf8');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.mergeExtensionTranslations = mergeExtensionTranslations;
|
|
108
|
+
/**
|
|
109
|
+
* Sorts the contents of the translation files so the sections & keys are alphabetical.
|
|
110
|
+
*/
|
|
111
|
+
function sortTranslationKeys(translations) {
|
|
112
|
+
const result = {};
|
|
113
|
+
const sections = Object.keys(translations).sort();
|
|
114
|
+
for (const section of sections) {
|
|
115
|
+
const sortedTokens = Object.entries(translations[section])
|
|
116
|
+
.sort(([keyA], [keyB]) => (keyA < keyB ? -1 : 1))
|
|
117
|
+
.reduce((output, [key, val]) => ({ ...output, [key]: val }), {});
|
|
118
|
+
result[section] = sortedTokens;
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Merges the second set of translations into the first, returning a new translations
|
|
124
|
+
* object.
|
|
125
|
+
*/
|
|
126
|
+
function mergeTranslations(t1, t2) {
|
|
127
|
+
const result = { ...t1 };
|
|
128
|
+
for (const [section, translations] of Object.entries(t2)) {
|
|
129
|
+
result[section] = {
|
|
130
|
+
...t1[section],
|
|
131
|
+
...translations,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=translations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.js","sourceRoot":"","sources":["../src/compiler/translations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { LanguageCode } from '@vendure/common/lib/generated-types';
|
|
2
|
+
export declare type Extension = AdminUiExtension | TranslationExtension | StaticAssetExtension | GlobalStylesExtension;
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
* Defines extensions to the Admin UI translations. Can be used as a stand-alone extension definition which only adds translations
|
|
6
|
+
* without adding new UI functionality, or as part of a full {@link AdminUiExtension}.
|
|
7
|
+
*
|
|
8
|
+
* @docsCategory UiDevkit
|
|
9
|
+
* @docsPage AdminUiExtension
|
|
10
|
+
*/
|
|
11
|
+
export interface TranslationExtension {
|
|
12
|
+
/**
|
|
13
|
+
* @description
|
|
14
|
+
* Optional object defining any translation files for the Admin UI. The value should be an object with
|
|
15
|
+
* the key as a 2-character [ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes),
|
|
16
|
+
* and the value being a [glob](https://github.com/isaacs/node-glob) for any relevant
|
|
17
|
+
* translation files in JSON format.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```TypeScript
|
|
21
|
+
* translations: {
|
|
22
|
+
* en: path.join(__dirname, 'translations/*.en.json'),
|
|
23
|
+
* de: path.join(__dirname, 'translations/*.de.json'),
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
translations: {
|
|
28
|
+
[languageCode in LanguageCode]?: string;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @description
|
|
33
|
+
* Defines extensions which copy static assets to the custom Admin UI application source asset directory.
|
|
34
|
+
*
|
|
35
|
+
* @docsCategory UiDevkit
|
|
36
|
+
* @docsPage AdminUiExtension
|
|
37
|
+
*/
|
|
38
|
+
export interface StaticAssetExtension {
|
|
39
|
+
/**
|
|
40
|
+
* @description
|
|
41
|
+
* Optional array of paths to static assets which will be copied over to the Admin UI app's `/static`
|
|
42
|
+
* directory.
|
|
43
|
+
*/
|
|
44
|
+
staticAssets: StaticAssetDefinition[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @description
|
|
48
|
+
* Defines extensions which add global styles to the custom Admin UI application.
|
|
49
|
+
*
|
|
50
|
+
* @docsCategory UiDevkit
|
|
51
|
+
* @docsPage AdminUiExtension
|
|
52
|
+
*/
|
|
53
|
+
export interface GlobalStylesExtension {
|
|
54
|
+
/**
|
|
55
|
+
* @description
|
|
56
|
+
* Specifies a path (or array of paths) to global style files (css or Sass) which will be
|
|
57
|
+
* incorporated into the Admin UI app global stylesheet.
|
|
58
|
+
*/
|
|
59
|
+
globalStyles: string[] | string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @description
|
|
63
|
+
* Defines extensions to the Admin UI application by specifying additional
|
|
64
|
+
* Angular [NgModules](https://angular.io/guide/ngmodules) which are compiled
|
|
65
|
+
* into the application.
|
|
66
|
+
*
|
|
67
|
+
* See [Extending the Admin UI](/docs/plugins/extending-the-admin-ui/) for
|
|
68
|
+
* detailed instructions.
|
|
69
|
+
*
|
|
70
|
+
* @docsCategory UiDevkit
|
|
71
|
+
* @docsPage AdminUiExtension
|
|
72
|
+
* @docsWeight 0
|
|
73
|
+
*/
|
|
74
|
+
export interface AdminUiExtension extends Partial<TranslationExtension>, Partial<StaticAssetExtension>, Partial<GlobalStylesExtension> {
|
|
75
|
+
/**
|
|
76
|
+
* @description
|
|
77
|
+
* An optional ID for the extension module. Only used internally for generating
|
|
78
|
+
* import paths to your module. If not specified, a unique hash will be used as the id.
|
|
79
|
+
*/
|
|
80
|
+
id?: string;
|
|
81
|
+
/**
|
|
82
|
+
* @description
|
|
83
|
+
* The path to the directory containing the extension module(s). The entire contents of this directory
|
|
84
|
+
* will be copied into the Admin UI app, including all TypeScript source files, html templates,
|
|
85
|
+
* scss style sheets etc.
|
|
86
|
+
*/
|
|
87
|
+
extensionPath: string;
|
|
88
|
+
/**
|
|
89
|
+
* @description
|
|
90
|
+
* One or more Angular modules which extend the default Admin UI.
|
|
91
|
+
*/
|
|
92
|
+
ngModules: Array<AdminUiExtensionSharedModule | AdminUiExtensionLazyModule>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @description
|
|
96
|
+
* A static asset can be provided as a path to the asset, or as an object containing a path and a new
|
|
97
|
+
* name, which will cause the compiler to copy and then rename the asset.
|
|
98
|
+
*
|
|
99
|
+
* @docsCategory UiDevkit
|
|
100
|
+
* @docsPage AdminUiExtension
|
|
101
|
+
*/
|
|
102
|
+
export declare type StaticAssetDefinition = string | {
|
|
103
|
+
path: string;
|
|
104
|
+
rename: string;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* @description
|
|
108
|
+
* Configuration defining a single NgModule with which to extend the Admin UI.
|
|
109
|
+
*
|
|
110
|
+
* @docsCategory UiDevkit
|
|
111
|
+
* @docsPage AdminUiExtension
|
|
112
|
+
*/
|
|
113
|
+
export interface AdminUiExtensionSharedModule {
|
|
114
|
+
/**
|
|
115
|
+
* @description
|
|
116
|
+
* Shared modules are directly imported into the main AppModule of the Admin UI
|
|
117
|
+
* and should be used to declare custom form components and define custom
|
|
118
|
+
* navigation items.
|
|
119
|
+
*/
|
|
120
|
+
type: 'shared';
|
|
121
|
+
/**
|
|
122
|
+
* @description
|
|
123
|
+
* The name of the file containing the extension module class.
|
|
124
|
+
*/
|
|
125
|
+
ngModuleFileName: string;
|
|
126
|
+
/**
|
|
127
|
+
* @description
|
|
128
|
+
* The name of the extension module class.
|
|
129
|
+
*/
|
|
130
|
+
ngModuleName: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* @description
|
|
134
|
+
* Configuration defining a single NgModule with which to extend the Admin UI.
|
|
135
|
+
*
|
|
136
|
+
* @docsCategory UiDevkit
|
|
137
|
+
* @docsPage AdminUiExtension
|
|
138
|
+
*/
|
|
139
|
+
export interface AdminUiExtensionLazyModule {
|
|
140
|
+
/**
|
|
141
|
+
* @description
|
|
142
|
+
* Lazy modules are lazy-loaded at the `/extensions/` route and should be used for
|
|
143
|
+
* modules which define new views for the Admin UI.
|
|
144
|
+
*/
|
|
145
|
+
type: 'lazy';
|
|
146
|
+
/**
|
|
147
|
+
* @description
|
|
148
|
+
* The route specifies the route at which the module will be lazy-loaded. E.g. a value
|
|
149
|
+
* of `'foo'` will cause the module to lazy-load when the `/extensions/foo` route
|
|
150
|
+
* is activated.
|
|
151
|
+
*/
|
|
152
|
+
route: string;
|
|
153
|
+
/**
|
|
154
|
+
* @description
|
|
155
|
+
* The name of the file containing the extension module class.
|
|
156
|
+
*/
|
|
157
|
+
ngModuleFileName: string;
|
|
158
|
+
/**
|
|
159
|
+
* @description
|
|
160
|
+
* The name of the extension module class.
|
|
161
|
+
*/
|
|
162
|
+
ngModuleName: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* @description
|
|
166
|
+
* Options to configure how the Admin UI should be compiled.
|
|
167
|
+
*
|
|
168
|
+
* @docsCategory UiDevkit
|
|
169
|
+
*/
|
|
170
|
+
export interface UiExtensionCompilerOptions {
|
|
171
|
+
/**
|
|
172
|
+
* @description
|
|
173
|
+
* The directory into which the sources for the extended Admin UI will be copied.
|
|
174
|
+
*/
|
|
175
|
+
outputPath: string;
|
|
176
|
+
/**
|
|
177
|
+
* @description
|
|
178
|
+
* An array of objects which configure Angular modules and/or
|
|
179
|
+
* translations with which to extend the Admin UI.
|
|
180
|
+
*/
|
|
181
|
+
extensions: Extension[];
|
|
182
|
+
/**
|
|
183
|
+
* @description
|
|
184
|
+
* Set to `true` in order to compile the Admin UI in development mode (using the Angular CLI
|
|
185
|
+
* [ng serve](https://angular.io/cli/serve) command). When in dev mode, any changes to
|
|
186
|
+
* UI extension files will be watched and trigger a rebuild of the Admin UI with live
|
|
187
|
+
* reloading.
|
|
188
|
+
*
|
|
189
|
+
* @default false
|
|
190
|
+
*/
|
|
191
|
+
devMode?: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* @description
|
|
194
|
+
* Allows the baseHref of the compiled Admin UI app to be set. This determines the prefix
|
|
195
|
+
* of the app, for example with the default value of `'/admin/'`, the Admin UI app
|
|
196
|
+
* will be configured to be served from `http://<host>/admin/`.
|
|
197
|
+
*
|
|
198
|
+
* @default '/admin/'
|
|
199
|
+
*/
|
|
200
|
+
baseHref?: string;
|
|
201
|
+
/**
|
|
202
|
+
* @description
|
|
203
|
+
* In watch mode, allows the port of the dev server to be specified. Defaults to the Angular CLI default
|
|
204
|
+
* of `4200`.
|
|
205
|
+
*
|
|
206
|
+
* @default 4200 | undefined
|
|
207
|
+
*/
|
|
208
|
+
watchPort?: number;
|
|
209
|
+
}
|
|
210
|
+
export declare type Translations = {
|
|
211
|
+
[section: string]: {
|
|
212
|
+
[token: string]: string;
|
|
213
|
+
};
|
|
214
|
+
};
|
|
215
|
+
export interface BrandingOptions {
|
|
216
|
+
smallLogoPath?: string;
|
|
217
|
+
largeLogoPath?: string;
|
|
218
|
+
faviconPath?: string;
|
|
219
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/compiler/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AdminUiExtension, Extension, GlobalStylesExtension, StaticAssetDefinition, StaticAssetExtension, TranslationExtension } from './types';
|
|
2
|
+
export declare const logger: {
|
|
3
|
+
log: (message: string) => void;
|
|
4
|
+
error: (message: string) => void;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Checks for the global yarn binary and returns true if found.
|
|
8
|
+
*/
|
|
9
|
+
export declare function shouldUseYarn(): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the string path of a static asset
|
|
12
|
+
*/
|
|
13
|
+
export declare function getStaticAssetPath(staticAssetDef: StaticAssetDefinition): string;
|
|
14
|
+
/**
|
|
15
|
+
* Copy the @vendure/ui-devkit files to the static assets dir.
|
|
16
|
+
*/
|
|
17
|
+
export declare function copyUiDevkit(outputPath: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Copies over any files defined by the extensions' `staticAssets` array to the shared
|
|
20
|
+
* static assets directory. When the app is built by the ng cli, this assets directory is
|
|
21
|
+
* the copied over to the final static assets location (i.e. http://domain/admin/assets/)
|
|
22
|
+
*/
|
|
23
|
+
export declare function copyStaticAsset(outputPath: string, staticAssetDef: StaticAssetDefinition): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Ensures each extension has an ID and a value for the optional properties.
|
|
26
|
+
* If not defined by the user, a deterministic ID is generated
|
|
27
|
+
* from a hash of the extension config.
|
|
28
|
+
*/
|
|
29
|
+
export declare function normalizeExtensions(extensions?: AdminUiExtension[]): Array<Required<AdminUiExtension>>;
|
|
30
|
+
export declare function isAdminUiExtension(input: Extension): input is AdminUiExtension;
|
|
31
|
+
export declare function isTranslationExtension(input: Extension): input is TranslationExtension;
|
|
32
|
+
export declare function isStaticAssetExtension(input: Extension): input is StaticAssetExtension;
|
|
33
|
+
export declare function isGlobalStylesExtension(input: Extension): input is GlobalStylesExtension;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.isGlobalStylesExtension = exports.isStaticAssetExtension = exports.isTranslationExtension = exports.isAdminUiExtension = exports.normalizeExtensions = exports.copyStaticAsset = exports.copyUiDevkit = exports.getStaticAssetPath = exports.shouldUseYarn = exports.logger = void 0;
|
|
26
|
+
/* tslint:disable:no-console */
|
|
27
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
28
|
+
const child_process_1 = require("child_process");
|
|
29
|
+
const crypto_1 = require("crypto");
|
|
30
|
+
const fs = __importStar(require("fs-extra"));
|
|
31
|
+
const path = __importStar(require("path"));
|
|
32
|
+
const constants_1 = require("./constants");
|
|
33
|
+
exports.logger = {
|
|
34
|
+
log: (message) => console.log(chalk_1.default.green(message)),
|
|
35
|
+
error: (message) => console.log(chalk_1.default.red(message)),
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Checks for the global yarn binary and returns true if found.
|
|
39
|
+
*/
|
|
40
|
+
function shouldUseYarn() {
|
|
41
|
+
try {
|
|
42
|
+
child_process_1.execSync('yarnpkg --version', { stdio: 'ignore' });
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.shouldUseYarn = shouldUseYarn;
|
|
50
|
+
/**
|
|
51
|
+
* Returns the string path of a static asset
|
|
52
|
+
*/
|
|
53
|
+
function getStaticAssetPath(staticAssetDef) {
|
|
54
|
+
return typeof staticAssetDef === 'string' ? staticAssetDef : staticAssetDef.path;
|
|
55
|
+
}
|
|
56
|
+
exports.getStaticAssetPath = getStaticAssetPath;
|
|
57
|
+
/**
|
|
58
|
+
* Copy the @vendure/ui-devkit files to the static assets dir.
|
|
59
|
+
*/
|
|
60
|
+
function copyUiDevkit(outputPath) {
|
|
61
|
+
const devkitDir = path.join(outputPath, constants_1.STATIC_ASSETS_OUTPUT_DIR, 'devkit');
|
|
62
|
+
fs.ensureDirSync(devkitDir);
|
|
63
|
+
fs.copySync(require.resolve('@vendure/ui-devkit'), path.join(devkitDir, 'ui-devkit.js'));
|
|
64
|
+
}
|
|
65
|
+
exports.copyUiDevkit = copyUiDevkit;
|
|
66
|
+
/**
|
|
67
|
+
* Copies over any files defined by the extensions' `staticAssets` array to the shared
|
|
68
|
+
* static assets directory. When the app is built by the ng cli, this assets directory is
|
|
69
|
+
* the copied over to the final static assets location (i.e. http://domain/admin/assets/)
|
|
70
|
+
*/
|
|
71
|
+
async function copyStaticAsset(outputPath, staticAssetDef) {
|
|
72
|
+
const staticAssetPath = getStaticAssetPath(staticAssetDef);
|
|
73
|
+
let assetOutputPath;
|
|
74
|
+
const assetBasename = path.basename(staticAssetPath);
|
|
75
|
+
assetOutputPath = path.join(outputPath, constants_1.STATIC_ASSETS_OUTPUT_DIR, assetBasename);
|
|
76
|
+
fs.copySync(staticAssetPath, assetOutputPath);
|
|
77
|
+
if (typeof staticAssetDef !== 'string') {
|
|
78
|
+
// The asset is being renamed
|
|
79
|
+
const newName = path.join(path.dirname(assetOutputPath), staticAssetDef.rename);
|
|
80
|
+
try {
|
|
81
|
+
// We use copy, remove rather than rename due to problems with the
|
|
82
|
+
// EPERM error in Windows.
|
|
83
|
+
await fs.copy(assetOutputPath, newName);
|
|
84
|
+
await fs.remove(assetOutputPath);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
exports.logger.log(e);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.copyStaticAsset = copyStaticAsset;
|
|
92
|
+
/**
|
|
93
|
+
* Ensures each extension has an ID and a value for the optional properties.
|
|
94
|
+
* If not defined by the user, a deterministic ID is generated
|
|
95
|
+
* from a hash of the extension config.
|
|
96
|
+
*/
|
|
97
|
+
function normalizeExtensions(extensions) {
|
|
98
|
+
return (extensions || []).map(e => {
|
|
99
|
+
let id = e.id;
|
|
100
|
+
if (!id) {
|
|
101
|
+
const hash = crypto_1.createHash('sha256');
|
|
102
|
+
hash.update(JSON.stringify(e));
|
|
103
|
+
id = hash.digest('hex');
|
|
104
|
+
}
|
|
105
|
+
return { staticAssets: [], translations: {}, globalStyles: [], ...e, id };
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
exports.normalizeExtensions = normalizeExtensions;
|
|
109
|
+
function isAdminUiExtension(input) {
|
|
110
|
+
return input.hasOwnProperty('extensionPath');
|
|
111
|
+
}
|
|
112
|
+
exports.isAdminUiExtension = isAdminUiExtension;
|
|
113
|
+
function isTranslationExtension(input) {
|
|
114
|
+
return input.hasOwnProperty('translations');
|
|
115
|
+
}
|
|
116
|
+
exports.isTranslationExtension = isTranslationExtension;
|
|
117
|
+
function isStaticAssetExtension(input) {
|
|
118
|
+
return input.hasOwnProperty('staticAssets');
|
|
119
|
+
}
|
|
120
|
+
exports.isStaticAssetExtension = isStaticAssetExtension;
|
|
121
|
+
function isGlobalStylesExtension(input) {
|
|
122
|
+
return input.hasOwnProperty('globalStyles');
|
|
123
|
+
}
|
|
124
|
+
exports.isGlobalStylesExtension = isGlobalStylesExtension;
|
|
125
|
+
//# sourceMappingURL=utils.js.map
|