@celljs/react 3.0.0

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.
Files changed (225) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/cell-cdn.yml +11 -0
  4. package/cell.yml +8 -0
  5. package/lib/browser/annotation/app.d.ts +3 -0
  6. package/lib/browser/annotation/app.d.ts.map +1 -0
  7. package/lib/browser/annotation/app.js +12 -0
  8. package/lib/browser/annotation/app.js.map +1 -0
  9. package/lib/browser/annotation/context.d.ts +3 -0
  10. package/lib/browser/annotation/context.d.ts.map +1 -0
  11. package/lib/browser/annotation/context.js +12 -0
  12. package/lib/browser/annotation/context.js.map +1 -0
  13. package/lib/browser/annotation/default-layout.d.ts +3 -0
  14. package/lib/browser/annotation/default-layout.d.ts.map +1 -0
  15. package/lib/browser/annotation/default-layout.js +12 -0
  16. package/lib/browser/annotation/default-layout.js.map +1 -0
  17. package/lib/browser/annotation/icon.d.ts +3 -0
  18. package/lib/browser/annotation/icon.d.ts.map +1 -0
  19. package/lib/browser/annotation/icon.js +12 -0
  20. package/lib/browser/annotation/icon.js.map +1 -0
  21. package/lib/browser/annotation/index.d.ts +9 -0
  22. package/lib/browser/annotation/index.d.ts.map +1 -0
  23. package/lib/browser/annotation/index.js +25 -0
  24. package/lib/browser/annotation/index.js.map +1 -0
  25. package/lib/browser/annotation/react-component.d.ts +4 -0
  26. package/lib/browser/annotation/react-component.d.ts.map +1 -0
  27. package/lib/browser/annotation/react-component.js +11 -0
  28. package/lib/browser/annotation/react-component.js.map +1 -0
  29. package/lib/browser/annotation/route.d.ts +3 -0
  30. package/lib/browser/annotation/route.d.ts.map +1 -0
  31. package/lib/browser/annotation/route.js +24 -0
  32. package/lib/browser/annotation/route.js.map +1 -0
  33. package/lib/browser/annotation/router.d.ts +3 -0
  34. package/lib/browser/annotation/router.d.ts.map +1 -0
  35. package/lib/browser/annotation/router.js +12 -0
  36. package/lib/browser/annotation/router.js.map +1 -0
  37. package/lib/browser/annotation/view.d.ts +3 -0
  38. package/lib/browser/annotation/view.d.ts.map +1 -0
  39. package/lib/browser/annotation/view.js +11 -0
  40. package/lib/browser/annotation/view.js.map +1 -0
  41. package/lib/browser/app/app-protocol.d.ts +2 -0
  42. package/lib/browser/app/app-protocol.d.ts.map +1 -0
  43. package/lib/browser/app/app-protocol.js +5 -0
  44. package/lib/browser/app/app-protocol.js.map +1 -0
  45. package/lib/browser/app/app.d.ts +9 -0
  46. package/lib/browser/app/app.d.ts.map +1 -0
  47. package/lib/browser/app/app.js +41 -0
  48. package/lib/browser/app/app.js.map +1 -0
  49. package/lib/browser/app/index.d.ts +3 -0
  50. package/lib/browser/app/index.d.ts.map +1 -0
  51. package/lib/browser/app/index.js +19 -0
  52. package/lib/browser/app/index.js.map +1 -0
  53. package/lib/browser/context/context-protocol.d.ts +6 -0
  54. package/lib/browser/context/context-protocol.d.ts.map +1 -0
  55. package/lib/browser/context/context-protocol.js +6 -0
  56. package/lib/browser/context/context-protocol.js.map +1 -0
  57. package/lib/browser/context/context-provider.d.ts +8 -0
  58. package/lib/browser/context/context-provider.d.ts.map +1 -0
  59. package/lib/browser/context/context-provider.js +35 -0
  60. package/lib/browser/context/context-provider.js.map +1 -0
  61. package/lib/browser/context/context.d.ts +10 -0
  62. package/lib/browser/context/context.d.ts.map +1 -0
  63. package/lib/browser/context/context.js +22 -0
  64. package/lib/browser/context/context.js.map +1 -0
  65. package/lib/browser/context/index.d.ts +4 -0
  66. package/lib/browser/context/index.d.ts.map +1 -0
  67. package/lib/browser/context/index.js +20 -0
  68. package/lib/browser/context/index.js.map +1 -0
  69. package/lib/browser/icon/icon-protocol.d.ts +7 -0
  70. package/lib/browser/icon/icon-protocol.d.ts.map +1 -0
  71. package/lib/browser/icon/icon-protocol.js +6 -0
  72. package/lib/browser/icon/icon-protocol.js.map +1 -0
  73. package/lib/browser/icon/icon.d.ts +2 -0
  74. package/lib/browser/icon/icon.d.ts.map +1 -0
  75. package/lib/browser/icon/icon.js +20 -0
  76. package/lib/browser/icon/icon.js.map +1 -0
  77. package/lib/browser/icon/index.d.ts +2 -0
  78. package/lib/browser/icon/index.d.ts.map +1 -0
  79. package/lib/browser/icon/index.js +18 -0
  80. package/lib/browser/icon/index.js.map +1 -0
  81. package/lib/browser/index.d.ts +12 -0
  82. package/lib/browser/index.d.ts.map +1 -0
  83. package/lib/browser/index.js +28 -0
  84. package/lib/browser/index.js.map +1 -0
  85. package/lib/browser/layout/index.d.ts +3 -0
  86. package/lib/browser/layout/index.d.ts.map +1 -0
  87. package/lib/browser/layout/index.js +19 -0
  88. package/lib/browser/layout/index.js.map +1 -0
  89. package/lib/browser/layout/layout-protocol.d.ts +2 -0
  90. package/lib/browser/layout/layout-protocol.d.ts.map +1 -0
  91. package/lib/browser/layout/layout-protocol.js +5 -0
  92. package/lib/browser/layout/layout-protocol.js.map +1 -0
  93. package/lib/browser/layout/layout.d.ts +5 -0
  94. package/lib/browser/layout/layout.d.ts.map +1 -0
  95. package/lib/browser/layout/layout.js +22 -0
  96. package/lib/browser/layout/layout.js.map +1 -0
  97. package/lib/browser/locale/index.d.ts +3 -0
  98. package/lib/browser/locale/index.d.ts.map +1 -0
  99. package/lib/browser/locale/index.js +19 -0
  100. package/lib/browser/locale/index.js.map +1 -0
  101. package/lib/browser/locale/locale-context.d.ts +8 -0
  102. package/lib/browser/locale/locale-context.d.ts.map +1 -0
  103. package/lib/browser/locale/locale-context.js +38 -0
  104. package/lib/browser/locale/locale-context.js.map +1 -0
  105. package/lib/browser/locale/locale-protocol.d.ts +2 -0
  106. package/lib/browser/locale/locale-protocol.d.ts.map +1 -0
  107. package/lib/browser/locale/locale-protocol.js +5 -0
  108. package/lib/browser/locale/locale-protocol.js.map +1 -0
  109. package/lib/browser/module.d.ts +4 -0
  110. package/lib/browser/module.d.ts.map +1 -0
  111. package/lib/browser/module.js +6 -0
  112. package/lib/browser/module.js.map +1 -0
  113. package/lib/browser/resolver/index.d.ts +3 -0
  114. package/lib/browser/resolver/index.d.ts.map +1 -0
  115. package/lib/browser/resolver/index.js +19 -0
  116. package/lib/browser/resolver/index.js.map +1 -0
  117. package/lib/browser/resolver/path-resolver.d.ts +6 -0
  118. package/lib/browser/resolver/path-resolver.d.ts.map +1 -0
  119. package/lib/browser/resolver/path-resolver.js +28 -0
  120. package/lib/browser/resolver/path-resolver.js.map +1 -0
  121. package/lib/browser/resolver/resolver-protocol.d.ts +5 -0
  122. package/lib/browser/resolver/resolver-protocol.d.ts.map +1 -0
  123. package/lib/browser/resolver/resolver-protocol.js +5 -0
  124. package/lib/browser/resolver/resolver-protocol.js.map +1 -0
  125. package/lib/browser/router/index.d.ts +6 -0
  126. package/lib/browser/router/index.d.ts.map +1 -0
  127. package/lib/browser/router/index.js +22 -0
  128. package/lib/browser/router/index.js.map +1 -0
  129. package/lib/browser/router/route-metadata-converter-provider.d.ts +7 -0
  130. package/lib/browser/router/route-metadata-converter-provider.d.ts.map +1 -0
  131. package/lib/browser/router/route-metadata-converter-provider.js +35 -0
  132. package/lib/browser/router/route-metadata-converter-provider.js.map +1 -0
  133. package/lib/browser/router/route-metadata-converter.d.ts +11 -0
  134. package/lib/browser/router/route-metadata-converter.d.ts.map +1 -0
  135. package/lib/browser/router/route-metadata-converter.js +51 -0
  136. package/lib/browser/router/route-metadata-converter.js.map +1 -0
  137. package/lib/browser/router/route-metadata-provider.d.ts +10 -0
  138. package/lib/browser/router/route-metadata-provider.d.ts.map +1 -0
  139. package/lib/browser/router/route-metadata-provider.js +49 -0
  140. package/lib/browser/router/route-metadata-provider.js.map +1 -0
  141. package/lib/browser/router/router-protocol.d.ts +24 -0
  142. package/lib/browser/router/router-protocol.d.ts.map +1 -0
  143. package/lib/browser/router/router-protocol.js +9 -0
  144. package/lib/browser/router/router-protocol.js.map +1 -0
  145. package/lib/browser/router/router.d.ts +3 -0
  146. package/lib/browser/router/router.d.ts.map +1 -0
  147. package/lib/browser/router/router.js +53 -0
  148. package/lib/browser/router/router.js.map +1 -0
  149. package/lib/browser/shell/index.d.ts +2 -0
  150. package/lib/browser/shell/index.d.ts.map +1 -0
  151. package/lib/browser/shell/index.js +18 -0
  152. package/lib/browser/shell/index.js.map +1 -0
  153. package/lib/browser/shell/shell.d.ts +7 -0
  154. package/lib/browser/shell/shell.d.ts.map +1 -0
  155. package/lib/browser/shell/shell.js +31 -0
  156. package/lib/browser/shell/shell.js.map +1 -0
  157. package/lib/browser/slot/index.d.ts +2 -0
  158. package/lib/browser/slot/index.d.ts.map +1 -0
  159. package/lib/browser/slot/index.js +18 -0
  160. package/lib/browser/slot/index.js.map +1 -0
  161. package/lib/browser/slot/slot.d.ts +4 -0
  162. package/lib/browser/slot/slot.d.ts.map +1 -0
  163. package/lib/browser/slot/slot.js +20 -0
  164. package/lib/browser/slot/slot.js.map +1 -0
  165. package/lib/browser/widget/index.d.ts +2 -0
  166. package/lib/browser/widget/index.d.ts.map +1 -0
  167. package/lib/browser/widget/index.js +18 -0
  168. package/lib/browser/widget/index.js.map +1 -0
  169. package/lib/browser/widget/widget-factory.d.ts +6 -0
  170. package/lib/browser/widget/widget-factory.d.ts.map +1 -0
  171. package/lib/browser/widget/widget-factory.js +23 -0
  172. package/lib/browser/widget/widget-factory.js.map +1 -0
  173. package/lib/hooks/webpack.d.ts +4 -0
  174. package/lib/hooks/webpack.d.ts.map +1 -0
  175. package/lib/hooks/webpack.js +166 -0
  176. package/lib/hooks/webpack.js.map +1 -0
  177. package/lib/package.spec.d.ts +1 -0
  178. package/lib/package.spec.d.ts.map +1 -0
  179. package/lib/package.spec.js +4 -0
  180. package/lib/package.spec.js.map +1 -0
  181. package/package.json +65 -0
  182. package/src/browser/annotation/app.ts +10 -0
  183. package/src/browser/annotation/context.ts +10 -0
  184. package/src/browser/annotation/default-layout.ts +10 -0
  185. package/src/browser/annotation/icon.ts +10 -0
  186. package/src/browser/annotation/index.ts +8 -0
  187. package/src/browser/annotation/react-component.ts +9 -0
  188. package/src/browser/annotation/route.ts +19 -0
  189. package/src/browser/annotation/router.ts +10 -0
  190. package/src/browser/annotation/view.ts +8 -0
  191. package/src/browser/app/app-protocol.ts +1 -0
  192. package/src/browser/app/app.tsx +25 -0
  193. package/src/browser/app/index.ts +2 -0
  194. package/src/browser/context/context-protocol.ts +8 -0
  195. package/src/browser/context/context-provider.ts +21 -0
  196. package/src/browser/context/context.tsx +16 -0
  197. package/src/browser/context/index.ts +3 -0
  198. package/src/browser/icon/icon-protocol.ts +9 -0
  199. package/src/browser/icon/icon.tsx +19 -0
  200. package/src/browser/icon/index.ts +1 -0
  201. package/src/browser/index.ts +11 -0
  202. package/src/browser/layout/index.ts +2 -0
  203. package/src/browser/layout/layout-protocol.ts +1 -0
  204. package/src/browser/layout/layout.tsx +10 -0
  205. package/src/browser/locale/index.ts +2 -0
  206. package/src/browser/locale/locale-context.tsx +30 -0
  207. package/src/browser/locale/locale-protocol.ts +1 -0
  208. package/src/browser/module.ts +4 -0
  209. package/src/browser/resolver/index.ts +2 -0
  210. package/src/browser/resolver/path-resolver.ts +13 -0
  211. package/src/browser/resolver/resolver-protocol.ts +5 -0
  212. package/src/browser/router/index.ts +5 -0
  213. package/src/browser/router/route-metadata-converter-provider.ts +19 -0
  214. package/src/browser/router/route-metadata-converter.ts +34 -0
  215. package/src/browser/router/route-metadata-provider.tsx +39 -0
  216. package/src/browser/router/router-protocol.ts +28 -0
  217. package/src/browser/router/router.tsx +44 -0
  218. package/src/browser/shell/index.ts +1 -0
  219. package/src/browser/shell/shell.tsx +16 -0
  220. package/src/browser/slot/index.ts +1 -0
  221. package/src/browser/slot/slot.tsx +18 -0
  222. package/src/browser/widget/index.ts +1 -0
  223. package/src/browser/widget/widget-factory.ts +13 -0
  224. package/src/hooks/webpack.ts +243 -0
  225. package/src/package.spec.ts +4 -0
@@ -0,0 +1,243 @@
1
+ import * as fs from 'fs-extra';
2
+ import * as path from 'path';
3
+ import { WebpackContext, ConfigurationContext } from '@celljs/cli-service/lib/context/context-protocol';
4
+ import { ConfigUtil } from '@celljs/cli-common/lib/utils/config-util';
5
+
6
+ interface LoaderOptions {
7
+ css: any,
8
+ scss: any,
9
+ sass: any,
10
+ less: any,
11
+ stylus: any,
12
+ postcss: any,
13
+ }
14
+
15
+ const findExisting = (context: string, files: string[]) => {
16
+ for (const file of files) {
17
+ if (fs.existsSync(path.join(context, file))) {
18
+ return file;
19
+ }
20
+ }
21
+ };
22
+
23
+ export default async (context: WebpackContext) => {
24
+ const { configurations, cfg, dev } = context;
25
+ const webpackConfig = ConfigurationContext.getFrontendConfiguration(
26
+ configurations
27
+ );
28
+ if (webpackConfig) {
29
+ const appRootDir = process.cwd();
30
+ const shadowMode = false;
31
+ const rootReactOptions = ConfigUtil.getFrontendCellConfig(cfg)?.react ?? {};
32
+ const defaultSassLoaderOptions = {
33
+ implementation: require('sass')
34
+ };
35
+ const css = rootReactOptions.css || {};
36
+ const { extract = !dev, sourceMap = false, loaderOptions = {} as LoaderOptions } = css;
37
+
38
+ let { requireModuleExtension } = css;
39
+ if (typeof requireModuleExtension === 'undefined') {
40
+ if (loaderOptions.css && loaderOptions.css.modules) {
41
+ throw new Error(
42
+ '`css.requireModuleExtension` is required when custom css modules options provided'
43
+ );
44
+ }
45
+ requireModuleExtension = true;
46
+ }
47
+
48
+ const { filenameHashing = true, productionSourceMap = true } = rootReactOptions;
49
+ const shouldExtract = extract !== false && !shadowMode;
50
+ const filename = `css/[name]${filenameHashing ? '.[contenthash:8]' : ''}.css`;
51
+ const cssPublicPath = './';
52
+
53
+ const extractOptions = Object.assign(
54
+ {
55
+ filename,
56
+ chunkFilename: filename,
57
+ },
58
+ extract && typeof extract === 'object' ? extract : {}
59
+ );
60
+
61
+ const hasPostCSSConfig = !!(
62
+ loaderOptions.postcss ||
63
+ findExisting(appRootDir, [
64
+ '.postcssrc',
65
+ '.postcssrc.js',
66
+ 'postcss.config.js',
67
+ '.postcssrc.yaml',
68
+ '.postcssrc.json',
69
+ ])
70
+ );
71
+
72
+ if (!hasPostCSSConfig) {
73
+ loaderOptions.postcss = {
74
+ postcssOptions: {
75
+ plugins: [require('autoprefixer')],
76
+ }
77
+ };
78
+ }
79
+
80
+ // if building for production but not extracting CSS, we need to minimize
81
+ // the embbeded inline CSS as they will not be going through the optimizing
82
+ // plugin.
83
+ const needInlineMinification = !dev && !shouldExtract;
84
+
85
+ const cssnanoOptions = {
86
+ preset: [
87
+ 'default',
88
+ {
89
+ mergeLonghand: false,
90
+ cssDeclarationSorter: false,
91
+ },
92
+ ],
93
+ };
94
+ if (productionSourceMap && sourceMap) {
95
+ // @ts-ignore
96
+ cssnanoOptions.map = { inline: false };
97
+ }
98
+
99
+ // @ts-ignore
100
+ function createCSSRule(lang: string,
101
+ test: RegExp,
102
+ loader?: string,
103
+ options = {}) {
104
+ const baseRule = webpackConfig!.module.rule(lang).test(test);
105
+
106
+ // rules for *.module.* files
107
+ const extModulesRule = baseRule
108
+ .oneOf('normal-modules')
109
+ .test(/\.module\.\w+$/);
110
+ applyLoaders(extModulesRule, true);
111
+
112
+ // rules for normal CSS imports
113
+ const normalRule = baseRule.oneOf('normal');
114
+ applyLoaders(normalRule, !requireModuleExtension);
115
+
116
+ function applyLoaders(rule: any, isCssModule: boolean) {
117
+ if (shouldExtract) {
118
+ rule.use('extract-css-loader')
119
+ .loader(require('mini-css-extract-plugin').loader)
120
+ .options({
121
+ publicPath: cssPublicPath,
122
+ });
123
+ } else {
124
+ rule.use('style-loader')
125
+ .loader(require.resolve('style-loader'))
126
+ .options({
127
+ injectType: 'singletonStyleTag'
128
+ });
129
+ }
130
+
131
+ const cssLoaderOptions = Object.assign(
132
+ {
133
+ sourceMap,
134
+ importLoaders:
135
+ 1 + // stylePostLoader injected by vue-loader
136
+ 1 + // postcss-loader
137
+ (needInlineMinification ? 1 : 0),
138
+ },
139
+ loaderOptions.css
140
+ );
141
+
142
+ if (isCssModule) {
143
+ cssLoaderOptions.modules = {
144
+ localIdentName: '[name]_[local]_[hash:base64:5]',
145
+ ...cssLoaderOptions.modules,
146
+ };
147
+ } else {
148
+ delete cssLoaderOptions.modules;
149
+ }
150
+
151
+ rule.use('css-loader')
152
+ .loader(require.resolve('css-loader'))
153
+ .options(cssLoaderOptions);
154
+
155
+ if (needInlineMinification) {
156
+ rule.use('cssnano')
157
+ .loader(require.resolve('postcss-loader'))
158
+ .options({
159
+ sourceMap,
160
+ plugins: [require('cssnano')(cssnanoOptions)],
161
+ });
162
+ }
163
+
164
+ rule.use('postcss-loader')
165
+ .loader(require.resolve('postcss-loader'))
166
+ .options(
167
+ Object.assign({ sourceMap }, loaderOptions.postcss)
168
+ );
169
+
170
+ if (loader) {
171
+ let resolvedLoader;
172
+ try {
173
+ resolvedLoader = require.resolve(loader);
174
+ } catch (error) {
175
+ resolvedLoader = loader;
176
+ }
177
+
178
+ rule.use(loader)
179
+ .loader(resolvedLoader)
180
+ .options(Object.assign({ sourceMap }, options));
181
+ }
182
+ }
183
+ }
184
+
185
+ createCSSRule('css', /\.css$/);
186
+ createCSSRule('postcss', /\.p(ost)?css$/);
187
+ createCSSRule(
188
+ 'scss',
189
+ /\.scss$/,
190
+ 'sass-loader',
191
+ Object.assign(
192
+ {},
193
+ defaultSassLoaderOptions,
194
+ loaderOptions.scss || loaderOptions.sass
195
+ )
196
+ );
197
+ createCSSRule(
198
+ 'sass',
199
+ /\.sass$/,
200
+ 'sass-loader',
201
+ Object.assign(
202
+ {},
203
+ defaultSassLoaderOptions,
204
+ loaderOptions.sass,
205
+ {
206
+ sassOptions: Object.assign(
207
+ {},
208
+ loaderOptions.sass &&
209
+ loaderOptions.sass.sassOptions,
210
+ {
211
+ indentedSyntax: true,
212
+ }
213
+ ),
214
+ }
215
+ )
216
+ );
217
+ createCSSRule('less', /\.less$/, 'less-loader', loaderOptions.less);
218
+ createCSSRule(
219
+ 'stylus',
220
+ /\.styl(us)?$/,
221
+ 'stylus-loader',
222
+ Object.assign(
223
+ {
224
+ preferPathResolver: 'webpack',
225
+ },
226
+ loaderOptions.stylus
227
+ )
228
+ );
229
+
230
+ // inject CSS extraction plugin
231
+ if (shouldExtract) {
232
+ webpackConfig
233
+ .plugin('extract-css')
234
+ .use(require('mini-css-extract-plugin'), [extractOptions]);
235
+
236
+ // minify extracted CSS
237
+ webpackConfig
238
+ .optimization
239
+ .minimizer('optimize-css')
240
+ .use(require('css-minimizer-webpack-plugin'));
241
+ }
242
+ }
243
+ };
@@ -0,0 +1,4 @@
1
+ describe('react package', () => {
2
+
3
+ it('support code coverage statistics', () => {});
4
+ });