@things-factory/shell 7.0.0-alpha.0 → 7.0.0-alpha.18

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 (97) hide show
  1. package/client/bootstrap.js +5 -0
  2. package/config/license.json +12 -12
  3. package/dist-server/graphql-local-client.d.ts +19 -0
  4. package/dist-server/graphql-local-client.js +17 -3
  5. package/dist-server/graphql-local-client.js.map +1 -1
  6. package/dist-server/index.d.ts +2 -0
  7. package/dist-server/index.js +2 -0
  8. package/dist-server/index.js.map +1 -1
  9. package/dist-server/initializers/database.d.ts +26 -0
  10. package/dist-server/initializers/database.js +26 -0
  11. package/dist-server/initializers/database.js.map +1 -1
  12. package/dist-server/pubsub-log-transport.d.ts +27 -0
  13. package/dist-server/pubsub-log-transport.js +15 -0
  14. package/dist-server/pubsub-log-transport.js.map +1 -1
  15. package/dist-server/pubsub.d.ts +9 -1
  16. package/dist-server/pubsub.js +14 -2
  17. package/dist-server/pubsub.js.map +1 -1
  18. package/dist-server/schema.d.ts +4 -0
  19. package/dist-server/schema.js +7 -3
  20. package/dist-server/schema.js.map +1 -1
  21. package/dist-server/server-dev.js +4 -1
  22. package/dist-server/server-dev.js.map +1 -1
  23. package/dist-server/server.js +4 -1
  24. package/dist-server/server.js.map +1 -1
  25. package/dist-server/service/subscription-data/data-resolver.js +6 -12
  26. package/dist-server/service/subscription-data/data-resolver.js.map +1 -1
  27. package/dist-server/tsconfig.tsbuildinfo +1 -1
  28. package/dist-server/typeorm/encrypt-transform.d.ts +5 -0
  29. package/dist-server/typeorm/encrypt-transform.js +25 -0
  30. package/dist-server/typeorm/encrypt-transform.js.map +1 -1
  31. package/dist-server/typeorm/json5-transform.d.ts +2 -0
  32. package/dist-server/typeorm/json5-transform.js +29 -0
  33. package/dist-server/typeorm/json5-transform.js.map +1 -0
  34. package/dist-server/typeorm/round-transform.d.ts +5 -0
  35. package/dist-server/typeorm/round-transform.js +21 -0
  36. package/dist-server/typeorm/round-transform.js.map +1 -0
  37. package/dist-server/utils/condition-builder.d.ts +11 -0
  38. package/dist-server/utils/condition-builder.js +11 -0
  39. package/dist-server/utils/condition-builder.js.map +1 -1
  40. package/dist-server/utils/get-domain.d.ts +46 -0
  41. package/dist-server/utils/get-domain.js +70 -0
  42. package/dist-server/utils/get-domain.js.map +1 -1
  43. package/dist-server/utils/get-query-builder-from-list-params.d.ts +12 -2
  44. package/dist-server/utils/get-query-builder-from-list-params.js +24 -8
  45. package/dist-server/utils/get-query-builder-from-list-params.js.map +1 -1
  46. package/dist-server/utils/get-times-for-period.d.ts +14 -0
  47. package/dist-server/utils/get-times-for-period.js +14 -0
  48. package/dist-server/utils/get-times-for-period.js.map +1 -1
  49. package/dist-server/utils/list-param-adjuster.d.ts +9 -0
  50. package/dist-server/utils/list-param-adjuster.js +9 -0
  51. package/dist-server/utils/list-param-adjuster.js.map +1 -1
  52. package/dist-server/utils/list-params-converter.d.ts +6 -0
  53. package/dist-server/utils/list-params-converter.js +27 -0
  54. package/dist-server/utils/list-params-converter.js.map +1 -1
  55. package/dist-server/utils/list-query-builder.d.ts +10 -1
  56. package/dist-server/utils/list-query-builder.js +10 -1
  57. package/dist-server/utils/list-query-builder.js.map +1 -1
  58. package/dist-server/utils/publish-progress.d.ts +9 -0
  59. package/dist-server/utils/publish-progress.js +9 -0
  60. package/dist-server/utils/publish-progress.js.map +1 -1
  61. package/package.json +7 -7
  62. package/server/graphql-local-client.ts +23 -3
  63. package/server/index.ts +3 -0
  64. package/server/initializers/database.ts +26 -0
  65. package/server/pubsub-log-transport.ts +29 -0
  66. package/server/pubsub.ts +17 -3
  67. package/server/schema.ts +9 -12
  68. package/server/server-dev.ts +7 -8
  69. package/server/server.ts +7 -8
  70. package/server/service/subscription-data/data-resolver.ts +9 -18
  71. package/server/typeorm/encrypt-transform.ts +26 -0
  72. package/server/typeorm/json5-transform.ts +26 -0
  73. package/server/typeorm/round-transform.ts +20 -0
  74. package/server/utils/condition-builder.ts +12 -8
  75. package/server/utils/get-domain.ts +70 -0
  76. package/server/utils/get-query-builder-from-list-params.ts +26 -16
  77. package/server/utils/get-times-for-period.ts +15 -4
  78. package/server/utils/list-param-adjuster.ts +9 -0
  79. package/server/utils/list-params-converter.ts +28 -4
  80. package/server/utils/list-query-builder.ts +13 -17
  81. package/server/utils/publish-progress.ts +9 -0
  82. package/dist-server/webpack/koa-webpack/client.d.ts +0 -1
  83. package/dist-server/webpack/koa-webpack/client.js +0 -24
  84. package/dist-server/webpack/koa-webpack/client.js.map +0 -1
  85. package/dist-server/webpack/koa-webpack/index.d.ts +0 -2
  86. package/dist-server/webpack/koa-webpack/index.js +0 -58
  87. package/dist-server/webpack/koa-webpack/index.js.map +0 -1
  88. package/dist-server/webpack/koa-webpack/middleware.d.ts +0 -0
  89. package/dist-server/webpack/koa-webpack/middleware.js +0 -42
  90. package/dist-server/webpack/koa-webpack/middleware.js.map +0 -1
  91. package/dist-server/webpack/koa-webpack/validate.d.ts +0 -1
  92. package/dist-server/webpack/koa-webpack/validate.js +0 -26
  93. package/dist-server/webpack/koa-webpack/validate.js.map +0 -1
  94. package/server/webpack/koa-webpack/client.ts +0 -26
  95. package/server/webpack/koa-webpack/index.ts +0 -71
  96. package/server/webpack/koa-webpack/middleware.ts +0 -47
  97. package/server/webpack/koa-webpack/validate.ts +0 -27
@@ -1,9 +1,13 @@
1
1
  import moment from 'moment-timezone'
2
2
 
3
- export async function getTimesForPeriod(
4
- period: 'today' | 'this month' | '30 days' | 'this year' | '12 months',
5
- context: any
6
- ): Promise<{ from: string; to: string }> {
3
+ /**
4
+ * Get the time range for the specified period relative to the current moment in a specific domain's timezone.
5
+ *
6
+ * @param {string} period - The time period to calculate the range for. Valid options are 'today', 'this month', '30 days', 'this year', '12 months'.
7
+ * @param {Object} context - The context object containing domain information.
8
+ * @returns {Promise<{ from: string; to: string }>} - A Promise that resolves to an object containing 'from' and 'to' ISO date strings representing the time range.
9
+ */
10
+ export async function getTimesForPeriod(period: 'today' | 'this month' | '30 days' | 'this year' | '12 months', context: any): Promise<{ from: string; to: string }> {
7
11
  const { domain } = context.state
8
12
  const theDate = moment.tz(new Date(), domain.timezone)
9
13
 
@@ -35,6 +39,13 @@ export async function getTimesForPeriod(
35
39
  }
36
40
  }
37
41
 
42
+ /**
43
+ * Get the ISO date strings for the specified period relative to the current moment in a specific domain's timezone.
44
+ *
45
+ * @param {string} period - The time period to calculate the range for. Valid options are 'today', 'this month', '30 days', 'this year', '12 months'.
46
+ * @param {Object} context - The context object containing domain information.
47
+ * @returns {Promise<{ from: string; to: string }>} - A Promise that resolves to an object containing 'from' and 'to' ISO date strings representing the time range.
48
+ */
38
49
  export async function getISOStringsForPeriod(
39
50
  period: 'today' | 'this month' | '30 days' | 'this year' | '12 months',
40
51
  context: any
@@ -1,5 +1,14 @@
1
1
  import { Filter } from '../service/common-types'
2
2
 
3
+ /**
4
+ * Adjust the given array of filters based on the provided changes.
5
+ * If a filter with the same name exists in the original array, it will be replaced with the new filter;
6
+ * otherwise, the new filter will be added to the array.
7
+ *
8
+ * @param {Filter[]} filters - The original array of filters to be adjusted.
9
+ * @param {Filter[]} filtersChange - The array of filter changes to be applied.
10
+ * @returns {Filter[]} - The adjusted array of filters.
11
+ */
3
12
  export function adjustFilters(filters: Filter[], filtersChange: Filter[]): Filter[] {
4
13
  var filtersNew = [...filters]
5
14
 
@@ -29,10 +29,20 @@ const OPERATION_FUNCTION_MAP: { [operator: string]: (value: any) => FindOperator
29
29
  between: value => Between(value[0], value[1])
30
30
  }
31
31
 
32
+ /**
33
+ * Get the TypeORM FindOperator function for a given filter.
34
+ * @param {Filter} filter - The filter object containing operator and value.
35
+ * @returns {FindOperator<any>} - The corresponding FindOperator function.
36
+ */
32
37
  function getOperatorFunction({ operator, value }: Filter): FindOperator<any> {
33
38
  return OPERATION_FUNCTION_MAP[operator](value)
34
39
  }
35
40
 
41
+ /**
42
+ * Create pagination parameters for a TypeORM query.
43
+ * @param {Pagination} pagination - The pagination object.
44
+ * @returns {{ skip?: number; take?: number }} - The pagination parameters.
45
+ */
36
46
  function makePaginationParams(pagination: Pagination): { skip?: number; take?: number } {
37
47
  var result = {} as { skip?: number; take?: number }
38
48
  if (pagination) {
@@ -53,6 +63,11 @@ function makePaginationParams(pagination: Pagination): { skip?: number; take?: n
53
63
  return result
54
64
  }
55
65
 
66
+ /**
67
+ * Create sorting parameters for a TypeORM query.
68
+ * @param {Sorting[]} sortings - The array of sorting objects.
69
+ * @returns {{ order?: { [name: string]: 'DESC' | 'ASC' } }} - The sorting parameters.
70
+ */
56
71
  function makeSortingParams(sortings: Sorting[]): { order?: { [name: string]: 'DESC' | 'ASC' } } {
57
72
  var result = {} as { order?: { [name: string]: 'DESC' | 'ASC' } }
58
73
  if (sortings) {
@@ -69,6 +84,12 @@ function makeSortingParams(sortings: Sorting[]): { order?: { [name: string]: 'DE
69
84
  return result
70
85
  }
71
86
 
87
+ /**
88
+ * Create filter parameters for a TypeORM query.
89
+ * @param {Filter[]} filters - The array of filter objects.
90
+ * @param {string[]} searchables - The array of searchable field names.
91
+ * @returns {{ where: { [name: string]: FindOperator<any> } | { [name: string]: FindOperator<any> }[] }} - The filter parameters.
92
+ */
72
93
  function makeFilterParams(
73
94
  filters: Filter[],
74
95
  searchables?: string[]
@@ -94,10 +115,7 @@ function makeFilterParams(
94
115
  return false
95
116
  }
96
117
  if (!searchables.includes(filter.name)) {
97
- console.warn(
98
- '"searchables" setting is required for like searches with a heavy database query load',
99
- filter.name
100
- )
118
+ console.warn('"searchables" setting is required for like searches with a heavy database query load', filter.name)
101
119
  return false
102
120
  }
103
121
  return true
@@ -128,6 +146,12 @@ function makeFilterParams(
128
146
  }
129
147
  }
130
148
 
149
+ /**
150
+ * Convert ListParam object to TypeORM query parameters.
151
+ * @param {ListParam} params - The ListParam object containing pagination, sorting, and filtering options.
152
+ * @param {string | { domain?: string | Domain; searchables?: string[] }} options - Optional domain and searchables parameters.
153
+ * @returns {{ where?: { [name: string]: FindOperator<any> }; order?: { [name: string]: 'DESC' | 'ASC' }; skip?: number; take?: number }} - The TypeORM query parameters.
154
+ */
131
155
  export function convertListParams(
132
156
  params: ListParam,
133
157
  options?:
@@ -4,7 +4,16 @@ import { buildCondition } from './condition-builder'
4
4
  import { Filter, ListParam, InheritedValueType } from '../service/common-types/list-param'
5
5
 
6
6
  /**
7
- * @deprecated The name of this function does not imply an exact purpose and it is not possible to correspond to a foreign key using the meta information of the table column, so it is recommended to replace it with the getQueryBuilderFromListParams function.
7
+ * @deprecated This function is recommended to be replaced with the `getQueryBuilderFromListParams` function.
8
+ *
9
+ * Builds a TypeORM query using the provided parameters to filter, paginate, and sort the data.
10
+ *
11
+ * @param {QueryBuilder} queryBuilder - The TypeORM query builder to build the query on.
12
+ * @param {ListParam} params - The list parameters to apply to the query.
13
+ * @param {Object} context - The context object, typically containing information about the user's domain.
14
+ * @param {boolean|Object} options - Additional options for the query builder.
15
+ * @param {boolean} options.domainRef - Indicates whether to include domain reference in the query.
16
+ * @param {string[]} options.searchables - An array of searchable field names.
8
17
  */
9
18
  export const buildQuery = function (
10
19
  queryBuilder: any,
@@ -31,10 +40,7 @@ export const buildQuery = function (
31
40
  return false
32
41
  }
33
42
  if (filter.operator.toLowerCase().includes('like') && (!searchables || !searchables.includes(filter.name))) {
34
- console.warn(
35
- '"searchables" setting is required for like searches with a heavy database query load',
36
- filter.name
37
- )
43
+ console.warn('"searchables" setting is required for like searches with a heavy database query load', filter.name)
38
44
  return false
39
45
  }
40
46
  return true
@@ -47,10 +53,7 @@ export const buildQuery = function (
47
53
  return false
48
54
  }
49
55
  if (!searchables.includes(filter.name)) {
50
- console.warn(
51
- '"searchables" setting is required for like searches with a heavy database query load',
52
- filter.name
53
- )
56
+ console.warn('"searchables" setting is required for like searches with a heavy database query load', filter.name)
54
57
  return false
55
58
  }
56
59
  return true
@@ -63,14 +66,7 @@ export const buildQuery = function (
63
66
 
64
67
  if (columnFilters && columnFilters.length > 0) {
65
68
  columnFilters.forEach(filter => {
66
- const condition = buildCondition(
67
- queryBuilder.alias,
68
- filter.name,
69
- filter.operator,
70
- filter.value,
71
- filter.relation,
72
- Object.keys(queryBuilder.getParameters()).length
73
- )
69
+ const condition = buildCondition(queryBuilder.alias, filter.name, filter.operator, filter.value, filter.relation, Object.keys(queryBuilder.getParameters()).length)
74
70
 
75
71
  if (condition?.clause) queryBuilder.andWhere(condition.clause)
76
72
  if (condition?.parameters) queryBuilder.setParameters(condition.parameters)
@@ -1,5 +1,14 @@
1
1
  import { pubsub } from '../pubsub'
2
2
 
3
+ /**
4
+ * Publishes a progress update message to the 'data' channel in the Pub/Sub system.
5
+ *
6
+ * @param {Object} param - The progress update parameters.
7
+ * @param {string} param.domain - The domain or category of the progress update.
8
+ * @param {string} param.tag - The tag or identifier for the progress update.
9
+ * @param {number} param.progress - The progress value indicating the completion percentage.
10
+ * @param {string} param.message - A message or description of the progress update.
11
+ */
3
12
  export function publishProgress({ domain, tag, progress, message }) {
4
13
  pubsub.publish('data', {
5
14
  data: {
@@ -1 +0,0 @@
1
- declare const webpackHotClient: any;
@@ -1,24 +0,0 @@
1
- /*
2
- Copyright © 2016 Andrew Powell
3
-
4
- This Source Code Form is subject to the terms of the Mozilla Public
5
- License, v. 2.0. If a copy of the MPL was not distributed with this
6
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
-
8
- The above copyright notice and this permission notice shall be
9
- included in all copies or substantial portions of this Source Code Form.
10
- */
11
- const webpackHotClient = require('@hatiolab/webpack-hot-client');
12
- module.exports = {
13
- getClient(compiler, options) {
14
- if (!options.hotClient) {
15
- return Promise.resolve(null);
16
- }
17
- return new Promise(resolve => {
18
- const client = webpackHotClient(compiler, options.hotClient);
19
- const { server } = client;
20
- server.on('listening', () => resolve(client));
21
- });
22
- }
23
- };
24
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../server/webpack/koa-webpack/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;EASE;AACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAA;AAEhE,MAAM,CAAC,OAAO,GAAG;IACf,SAAS,CAAC,QAAQ,EAAE,OAAO;QACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACtB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;SAC7B;QAED,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;YAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;YAEzB,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA","sourcesContent":["/*\n Copyright © 2016 Andrew Powell\n\n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of this Source Code Form.\n*/\nconst webpackHotClient = require('@hatiolab/webpack-hot-client')\n\nmodule.exports = {\n getClient(compiler, options) {\n if (!options.hotClient) {\n return Promise.resolve(null)\n }\n\n return new Promise(resolve => {\n const client = webpackHotClient(compiler, options.hotClient)\n const { server } = client\n\n server.on('listening', () => resolve(client))\n })\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- declare const _default: (opts: any) => Promise<any>;
2
- export default _default;
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /*
4
- Copyright © 2016 Andrew Powell
5
-
6
- This Source Code Form is subject to the terms of the Mozilla Public
7
- License, v. 2.0. If a copy of the MPL was not distributed with this
8
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
-
10
- The above copyright notice and this permission notice shall be
11
- included in all copies or substantial portions of this Source Code Form.
12
- */
13
- const { join } = require('path');
14
- const root = require('app-root-path');
15
- const chalk = require('chalk');
16
- const webpack = require('webpack');
17
- const webpackDevMiddleware = require('webpack-dev-middleware');
18
- const { getClient } = require('./client');
19
- const { getMiddleware } = require('./middleware');
20
- const { validate } = require('./validate');
21
- const defaults = { devMiddleware: {}, hotClient: {} };
22
- exports.default = async (opts) => {
23
- const valid = validate(opts);
24
- if (valid.error) {
25
- const { error } = console;
26
- error(chalk.red('⬢ koa-webpack:'), 'An option was passed to koa-webpack that is not valid');
27
- throw valid.error;
28
- }
29
- const options = Object.assign({}, defaults, opts);
30
- let { compiler, config } = options;
31
- if (!compiler) {
32
- if (!config) {
33
- // eslint-disable-next-line import/no-dynamic-require, global-require
34
- config = require(options.configPath || join(root.path, 'webpack.config.js'));
35
- }
36
- compiler = webpack(config);
37
- }
38
- if (!options.devMiddleware.publicPath) {
39
- const { publicPath } = compiler.options.output;
40
- if (!publicPath) {
41
- throw new Error("koa-webpack: publicPath must be set on `dev` options, or in a compiler's `output` configuration.");
42
- }
43
- options.devMiddleware.publicPath = publicPath;
44
- }
45
- const hotClient = await getClient(compiler, options);
46
- const devMiddleware = webpackDevMiddleware(compiler, options.devMiddleware);
47
- const middleware = getMiddleware(compiler, devMiddleware);
48
- const close = callback => {
49
- const next = hotClient ? () => hotClient.close(callback) : callback;
50
- devMiddleware.close(next);
51
- };
52
- return Object.assign(middleware, {
53
- hotClient,
54
- devMiddleware,
55
- close
56
- });
57
- };
58
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/webpack/koa-webpack/index.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;EASE;AACF,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAEhC,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AACrC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAClC,MAAM,oBAAoB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAA;AAE9D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AACzC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAE1C,MAAM,QAAQ,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAA;AAErD,kBAAe,KAAK,EAAC,IAAI,EAAC,EAAE;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE5B,IAAI,KAAK,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QACzB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,uDAAuD,CAAC,CAAA;QAC3F,MAAM,KAAK,CAAC,KAAK,CAAA;KAClB;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAEjD,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAElC,IAAI,CAAC,QAAQ,EAAE;QACb,IAAI,CAAC,MAAM,EAAE;YACX,qEAAqE;YACrE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAA;SAC7E;QAED,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAC3B;IAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE;QACrC,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAA;QAE9C,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAA;SACF;QAED,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU,CAAA;KAC9C;IAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAC3E,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE;QACvB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QACnE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC,CAAA;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;QAC/B,SAAS;QACT,aAAa;QACb,KAAK;KACN,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["/*\n Copyright © 2016 Andrew Powell\n\n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of this Source Code Form.\n*/\nconst { join } = require('path')\n\nconst root = require('app-root-path')\nconst chalk = require('chalk')\nconst webpack = require('webpack')\nconst webpackDevMiddleware = require('webpack-dev-middleware')\n\nconst { getClient } = require('./client')\nconst { getMiddleware } = require('./middleware')\nconst { validate } = require('./validate')\n\nconst defaults = { devMiddleware: {}, hotClient: {} }\n\nexport default async opts => {\n const valid = validate(opts)\n\n if (valid.error) {\n const { error } = console\n error(chalk.red('⬢ koa-webpack:'), 'An option was passed to koa-webpack that is not valid')\n throw valid.error\n }\n\n const options = Object.assign({}, defaults, opts)\n\n let { compiler, config } = options\n\n if (!compiler) {\n if (!config) {\n // eslint-disable-next-line import/no-dynamic-require, global-require\n config = require(options.configPath || join(root.path, 'webpack.config.js'))\n }\n\n compiler = webpack(config)\n }\n\n if (!options.devMiddleware.publicPath) {\n const { publicPath } = compiler.options.output\n\n if (!publicPath) {\n throw new Error(\n \"koa-webpack: publicPath must be set on `dev` options, or in a compiler's `output` configuration.\"\n )\n }\n\n options.devMiddleware.publicPath = publicPath\n }\n\n const hotClient = await getClient(compiler, options)\n const devMiddleware = webpackDevMiddleware(compiler, options.devMiddleware)\n const middleware = getMiddleware(compiler, devMiddleware)\n const close = callback => {\n const next = hotClient ? () => hotClient.close(callback) : callback\n devMiddleware.close(next)\n }\n\n return Object.assign(middleware, {\n hotClient,\n devMiddleware,\n close\n })\n}\n"]}
File without changes
@@ -1,42 +0,0 @@
1
- /*
2
- Copyright © 2016 Andrew Powell
3
-
4
- This Source Code Form is subject to the terms of the Mozilla Public
5
- License, v. 2.0. If a copy of the MPL was not distributed with this
6
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
-
8
- The above copyright notice and this permission notice shall be
9
- included in all copies or substantial portions of this Source Code Form.
10
- */
11
- module.exports = {
12
- getMiddleware(compiler, devMiddleware) {
13
- return (context, next) => {
14
- // wait for webpack-dev-middleware to signal that the build is ready
15
- const ready = new Promise((resolve, reject) => {
16
- for (const comp of [].concat(compiler.compilers || compiler)) {
17
- comp.hooks.failed.tap('KoaWebpack', error => {
18
- reject(error);
19
- });
20
- }
21
- devMiddleware.waitUntilValid(() => {
22
- resolve(true);
23
- });
24
- });
25
- // tell webpack-dev-middleware to handle the request
26
- const init = new Promise(resolve => {
27
- devMiddleware(context.req, {
28
- end: content => {
29
- // eslint-disable-next-line no-param-reassign
30
- context.body = content;
31
- resolve(null);
32
- },
33
- getHeader: context.get.bind(context),
34
- setHeader: context.set.bind(context),
35
- locals: context.state
36
- }, () => resolve(next()));
37
- });
38
- return Promise.all([ready, init]);
39
- };
40
- }
41
- };
42
- //# sourceMappingURL=middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../server/webpack/koa-webpack/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;EASE;AACF,MAAM,CAAC,OAAO,GAAG;IACf,aAAa,CAAC,QAAQ,EAAE,aAAa;QACnC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACvB,oEAAoE;YACpE,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC5C,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,EAAE;oBAC5D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;wBAC1C,MAAM,CAAC,KAAK,CAAC,CAAA;oBACf,CAAC,CAAC,CAAA;iBACH;gBAED,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE;oBAChC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,oDAAoD;YACpD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBACjC,aAAa,CACX,OAAO,CAAC,GAAG,EACX;oBACE,GAAG,EAAE,OAAO,CAAC,EAAE;wBACb,6CAA6C;wBAC7C,OAAO,CAAC,IAAI,GAAG,OAAO,CAAA;wBACtB,OAAO,CAAC,IAAI,CAAC,CAAA;oBACf,CAAC;oBACD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;oBACpC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;oBACpC,MAAM,EAAE,OAAO,CAAC,KAAK;iBACtB,EACD,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CACtB,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;QACnC,CAAC,CAAA;IACH,CAAC;CACF,CAAA","sourcesContent":["/*\n Copyright © 2016 Andrew Powell\n\n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of this Source Code Form.\n*/\nmodule.exports = {\n getMiddleware(compiler, devMiddleware) {\n return (context, next) => {\n // wait for webpack-dev-middleware to signal that the build is ready\n const ready = new Promise((resolve, reject) => {\n for (const comp of [].concat(compiler.compilers || compiler)) {\n comp.hooks.failed.tap('KoaWebpack', error => {\n reject(error)\n })\n }\n\n devMiddleware.waitUntilValid(() => {\n resolve(true)\n })\n })\n // tell webpack-dev-middleware to handle the request\n const init = new Promise(resolve => {\n devMiddleware(\n context.req,\n {\n end: content => {\n // eslint-disable-next-line no-param-reassign\n context.body = content\n resolve(null)\n },\n getHeader: context.get.bind(context),\n setHeader: context.set.bind(context),\n locals: context.state\n },\n () => resolve(next())\n )\n })\n\n return Promise.all([ready, init])\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- declare const Joi: any;
@@ -1,26 +0,0 @@
1
- /*
2
- Copyright © 2016 Andrew Powell
3
-
4
- This Source Code Form is subject to the terms of the Mozilla Public
5
- License, v. 2.0. If a copy of the MPL was not distributed with this
6
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
-
8
- The above copyright notice and this permission notice shall be
9
- included in all copies or substantial portions of this Source Code Form.
10
- */
11
- const Joi = require('joi');
12
- module.exports = {
13
- validate(options) {
14
- const keys = {
15
- compiler: [Joi.object().allow(null)],
16
- config: [Joi.object().allow(null)],
17
- configPath: [Joi.string().allow(null)],
18
- devMiddleware: [Joi.object()],
19
- hotClient: [Joi.boolean(), Joi.object().allow(null)]
20
- };
21
- const schema = Joi.object().keys(keys);
22
- const results = schema.validate(options);
23
- return results;
24
- }
25
- };
26
- //# sourceMappingURL=validate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../server/webpack/koa-webpack/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;EASE;AACF,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAE3B,MAAM,CAAC,OAAO,GAAG;IACf,QAAQ,CAAC,OAAO;QACd,MAAM,IAAI,GAAG;YACX,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,aAAa,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC7B,SAAS,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACrD,CAAC;QACF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC","sourcesContent":["/*\n Copyright © 2016 Andrew Powell\n\n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of this Source Code Form.\n*/\nconst Joi = require('joi');\n\nmodule.exports = {\n validate(options) {\n const keys = {\n compiler: [Joi.object().allow(null)],\n config: [Joi.object().allow(null)],\n configPath: [Joi.string().allow(null)],\n devMiddleware: [Joi.object()],\n hotClient: [Joi.boolean(), Joi.object().allow(null)]\n };\n const schema = Joi.object().keys(keys);\n const results = schema.validate(options);\n\n return results;\n }\n};\n"]}
@@ -1,26 +0,0 @@
1
- /*
2
- Copyright © 2016 Andrew Powell
3
-
4
- This Source Code Form is subject to the terms of the Mozilla Public
5
- License, v. 2.0. If a copy of the MPL was not distributed with this
6
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
-
8
- The above copyright notice and this permission notice shall be
9
- included in all copies or substantial portions of this Source Code Form.
10
- */
11
- const webpackHotClient = require('@hatiolab/webpack-hot-client')
12
-
13
- module.exports = {
14
- getClient(compiler, options) {
15
- if (!options.hotClient) {
16
- return Promise.resolve(null)
17
- }
18
-
19
- return new Promise(resolve => {
20
- const client = webpackHotClient(compiler, options.hotClient)
21
- const { server } = client
22
-
23
- server.on('listening', () => resolve(client))
24
- })
25
- }
26
- }
@@ -1,71 +0,0 @@
1
- /*
2
- Copyright © 2016 Andrew Powell
3
-
4
- This Source Code Form is subject to the terms of the Mozilla Public
5
- License, v. 2.0. If a copy of the MPL was not distributed with this
6
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
-
8
- The above copyright notice and this permission notice shall be
9
- included in all copies or substantial portions of this Source Code Form.
10
- */
11
- const { join } = require('path')
12
-
13
- const root = require('app-root-path')
14
- const chalk = require('chalk')
15
- const webpack = require('webpack')
16
- const webpackDevMiddleware = require('webpack-dev-middleware')
17
-
18
- const { getClient } = require('./client')
19
- const { getMiddleware } = require('./middleware')
20
- const { validate } = require('./validate')
21
-
22
- const defaults = { devMiddleware: {}, hotClient: {} }
23
-
24
- export default async opts => {
25
- const valid = validate(opts)
26
-
27
- if (valid.error) {
28
- const { error } = console
29
- error(chalk.red('⬢ koa-webpack:'), 'An option was passed to koa-webpack that is not valid')
30
- throw valid.error
31
- }
32
-
33
- const options = Object.assign({}, defaults, opts)
34
-
35
- let { compiler, config } = options
36
-
37
- if (!compiler) {
38
- if (!config) {
39
- // eslint-disable-next-line import/no-dynamic-require, global-require
40
- config = require(options.configPath || join(root.path, 'webpack.config.js'))
41
- }
42
-
43
- compiler = webpack(config)
44
- }
45
-
46
- if (!options.devMiddleware.publicPath) {
47
- const { publicPath } = compiler.options.output
48
-
49
- if (!publicPath) {
50
- throw new Error(
51
- "koa-webpack: publicPath must be set on `dev` options, or in a compiler's `output` configuration."
52
- )
53
- }
54
-
55
- options.devMiddleware.publicPath = publicPath
56
- }
57
-
58
- const hotClient = await getClient(compiler, options)
59
- const devMiddleware = webpackDevMiddleware(compiler, options.devMiddleware)
60
- const middleware = getMiddleware(compiler, devMiddleware)
61
- const close = callback => {
62
- const next = hotClient ? () => hotClient.close(callback) : callback
63
- devMiddleware.close(next)
64
- }
65
-
66
- return Object.assign(middleware, {
67
- hotClient,
68
- devMiddleware,
69
- close
70
- })
71
- }
@@ -1,47 +0,0 @@
1
- /*
2
- Copyright © 2016 Andrew Powell
3
-
4
- This Source Code Form is subject to the terms of the Mozilla Public
5
- License, v. 2.0. If a copy of the MPL was not distributed with this
6
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
-
8
- The above copyright notice and this permission notice shall be
9
- included in all copies or substantial portions of this Source Code Form.
10
- */
11
- module.exports = {
12
- getMiddleware(compiler, devMiddleware) {
13
- return (context, next) => {
14
- // wait for webpack-dev-middleware to signal that the build is ready
15
- const ready = new Promise((resolve, reject) => {
16
- for (const comp of [].concat(compiler.compilers || compiler)) {
17
- comp.hooks.failed.tap('KoaWebpack', error => {
18
- reject(error)
19
- })
20
- }
21
-
22
- devMiddleware.waitUntilValid(() => {
23
- resolve(true)
24
- })
25
- })
26
- // tell webpack-dev-middleware to handle the request
27
- const init = new Promise(resolve => {
28
- devMiddleware(
29
- context.req,
30
- {
31
- end: content => {
32
- // eslint-disable-next-line no-param-reassign
33
- context.body = content
34
- resolve(null)
35
- },
36
- getHeader: context.get.bind(context),
37
- setHeader: context.set.bind(context),
38
- locals: context.state
39
- },
40
- () => resolve(next())
41
- )
42
- })
43
-
44
- return Promise.all([ready, init])
45
- }
46
- }
47
- }
@@ -1,27 +0,0 @@
1
- /*
2
- Copyright © 2016 Andrew Powell
3
-
4
- This Source Code Form is subject to the terms of the Mozilla Public
5
- License, v. 2.0. If a copy of the MPL was not distributed with this
6
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
-
8
- The above copyright notice and this permission notice shall be
9
- included in all copies or substantial portions of this Source Code Form.
10
- */
11
- const Joi = require('joi');
12
-
13
- module.exports = {
14
- validate(options) {
15
- const keys = {
16
- compiler: [Joi.object().allow(null)],
17
- config: [Joi.object().allow(null)],
18
- configPath: [Joi.string().allow(null)],
19
- devMiddleware: [Joi.object()],
20
- hotClient: [Joi.boolean(), Joi.object().allow(null)]
21
- };
22
- const schema = Joi.object().keys(keys);
23
- const results = schema.validate(options);
24
-
25
- return results;
26
- }
27
- };