@roots/bud-build 5.0.0 → 5.1.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 (64) hide show
  1. package/lib/cjs/Build/config.js +247 -252
  2. package/lib/cjs/Build/index.js +120 -77
  3. package/lib/cjs/Build/items.js +14 -18
  4. package/lib/cjs/Build/loaders.js +4 -3
  5. package/lib/cjs/Build/rules.js +129 -94
  6. package/lib/cjs/Item/index.js +16 -9
  7. package/lib/cjs/Item/item.dependencies.js +0 -1
  8. package/lib/cjs/Item/item.interface.js +0 -1
  9. package/lib/cjs/Loader/index.js +27 -4
  10. package/lib/cjs/Rule/index.js +178 -81
  11. package/lib/cjs/index.js +22 -5
  12. package/lib/cjs/shared/Base.js +0 -1
  13. package/lib/tsconfig.tsbuildinfo +1 -1
  14. package/package.json +9 -26
  15. package/types/Build/config.d.ts.map +1 -1
  16. package/types/Build/index.d.ts +19 -4
  17. package/types/Build/index.d.ts.map +1 -1
  18. package/types/Build/items.d.ts +3 -3
  19. package/types/Build/items.d.ts.map +1 -1
  20. package/types/Build/loaders.d.ts.map +1 -1
  21. package/types/Build/rules.d.ts +38 -21
  22. package/types/Build/rules.d.ts.map +1 -1
  23. package/types/Item/index.d.ts +1 -1
  24. package/types/Item/index.d.ts.map +1 -1
  25. package/types/Rule/index.d.ts +122 -24
  26. package/types/Rule/index.d.ts.map +1 -1
  27. package/types/shared/Base.d.ts.map +1 -1
  28. package/lib/cjs/Build/config.js.map +0 -1
  29. package/lib/cjs/Build/index.js.map +0 -1
  30. package/lib/cjs/Build/items.js.map +0 -1
  31. package/lib/cjs/Build/loaders.js.map +0 -1
  32. package/lib/cjs/Build/rules.js.map +0 -1
  33. package/lib/cjs/Item/index.js.map +0 -1
  34. package/lib/cjs/Item/item.dependencies.js.map +0 -1
  35. package/lib/cjs/Item/item.interface.js.map +0 -1
  36. package/lib/cjs/Loader/index.js.map +0 -1
  37. package/lib/cjs/Rule/index.js.map +0 -1
  38. package/lib/cjs/index.js.map +0 -1
  39. package/lib/cjs/shared/Base.js.map +0 -1
  40. package/lib/esm/Build/config.js +0 -263
  41. package/lib/esm/Build/config.js.map +0 -1
  42. package/lib/esm/Build/index.js +0 -133
  43. package/lib/esm/Build/index.js.map +0 -1
  44. package/lib/esm/Build/items.js +0 -119
  45. package/lib/esm/Build/items.js.map +0 -1
  46. package/lib/esm/Build/loaders.js +0 -55
  47. package/lib/esm/Build/loaders.js.map +0 -1
  48. package/lib/esm/Build/rules.js +0 -129
  49. package/lib/esm/Build/rules.js.map +0 -1
  50. package/lib/esm/Item/index.js +0 -80
  51. package/lib/esm/Item/index.js.map +0 -1
  52. package/lib/esm/Item/item.dependencies.js +0 -4
  53. package/lib/esm/Item/item.dependencies.js.map +0 -1
  54. package/lib/esm/Item/item.interface.js +0 -2
  55. package/lib/esm/Item/item.interface.js.map +0 -1
  56. package/lib/esm/Loader/index.js +0 -49
  57. package/lib/esm/Loader/index.js.map +0 -1
  58. package/lib/esm/Rule/index.js +0 -155
  59. package/lib/esm/Rule/index.js.map +0 -1
  60. package/lib/esm/index.js +0 -26
  61. package/lib/esm/index.js.map +0 -1
  62. package/lib/esm/shared/Base.js +0 -8
  63. package/lib/esm/shared/Base.js.map +0 -1
  64. package/lib/tsconfig-esm.tsbuildinfo +0 -1
@@ -1,13 +1,41 @@
1
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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
15
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
19
+ };
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ var __importDefault = (this && this.__importDefault) || function (mod) {
28
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
+ };
2
30
  Object.defineProperty(exports, "__esModule", { value: true });
3
31
  exports.Build = void 0;
4
- const tslib_1 = require("tslib");
5
32
  const bud_framework_1 = require("@roots/bud-framework");
6
33
  const bud_support_1 = require("@roots/bud-support");
34
+ const Rule_1 = require("../Rule");
7
35
  const config_1 = require("./config");
8
- const items_1 = (0, tslib_1.__importDefault)(require("./items"));
9
- const loaders_1 = (0, tslib_1.__importDefault)(require("./loaders"));
10
- const rules = (0, tslib_1.__importStar)(require("./rules"));
36
+ const items_1 = __importDefault(require("./items"));
37
+ const loaders_1 = __importDefault(require("./loaders"));
38
+ const rules = __importStar(require("./rules"));
11
39
  const { isNull, isUndefined } = bud_support_1.lodash;
12
40
  const { ensureFile, writeFile } = bud_support_1.fs;
13
41
  /**
@@ -22,10 +50,8 @@ class Build extends bud_framework_1.Service {
22
50
  * @public
23
51
  * @decorator `@bind`
24
52
  */
25
- registered() {
26
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
27
- this.app.hooks.on('event.build.make.after', this.writeFinalConfig);
28
- });
53
+ async registered() {
54
+ this.app.hooks.on('event.build.make.after', this.writeFinalConfig);
29
55
  }
30
56
  /**
31
57
  * Make webpack configuration
@@ -33,31 +59,28 @@ class Build extends bud_framework_1.Service {
33
59
  * @public
34
60
  * @decorator `@bind`
35
61
  */
36
- make() {
37
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
38
- yield this.app.hooks.filterAsync('event.build.make.before', this.app);
39
- const build = yield this.app.hooks.filterAsync('build');
40
- if (!build) {
41
- throw new Error('Configuration could not be processed');
62
+ async make() {
63
+ await this.app.hooks.filterAsync('event.build.make.before', this.app);
64
+ const build = await this.app.hooks.filterAsync('build');
65
+ if (!build) {
66
+ throw new Error('Configuration could not be processed');
67
+ }
68
+ this.config = await this.app.hooks.filterAsync('event.build.override', Object.entries(build).reduce((all, [key, value]) => {
69
+ if (isUndefined(value) || isNull(value)) {
70
+ this.log(`warn`, {
71
+ message: `build.make: excluding ${key}`,
72
+ suffix: `value is undefined`,
73
+ });
74
+ return all;
42
75
  }
43
- this.config =
44
- yield this.app.hooks.filterAsync('event.build.override', Object.entries(build).reduce((all, [key, value]) => {
45
- if (isUndefined(value) || isNull(value)) {
46
- this.log(`warn`, {
47
- message: `build.make: excluding ${key}`,
48
- suffix: `value is undefined`,
49
- });
50
- return all;
51
- }
52
- this.app.dump(value, {
53
- prefix: `${bud_support_1.chalk.bgBlue(this.app.name)} config.${key}`,
54
- maxDepth: 2,
55
- });
56
- return Object.assign(Object.assign({}, all), { [key]: value });
57
- }, {}));
58
- yield this.app.hooks.filterAsync('event.build.make.after', () => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () { return null; }));
59
- return this.config;
60
- });
76
+ this.app.dump(value, {
77
+ prefix: `${bud_support_1.chalk.bgBlue(this.app.name)} config.${key}`,
78
+ maxDepth: 2,
79
+ });
80
+ return { ...all, [key]: value };
81
+ }, {}));
82
+ await this.app.hooks.filterAsync('event.build.make.after', async () => null);
83
+ return this.config;
61
84
  }
62
85
  /**
63
86
  * Service register event
@@ -65,73 +88,93 @@ class Build extends bud_framework_1.Service {
65
88
  * @public
66
89
  * @decorator `@bind`
67
90
  */
68
- register() {
69
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
70
- const reducer = (a, [k, v]) => (Object.assign(Object.assign({}, a), { [k]: v() }));
71
- Object.assign(this, {
72
- loaders: this.app
73
- .container(loaders_1.default)
74
- .getEntries()
75
- .reduce(reducer, this.loaders),
76
- rules: this.app
77
- .container(rules)
78
- .getEntries()
79
- .reduce(reducer, this.rules),
80
- items: this.app
81
- .container(items_1.default)
82
- .getEntries()
83
- .reduce(reducer, this.items),
84
- });
85
- yield (0, config_1.config)(this.app);
91
+ async register() {
92
+ const reducer = (a, [k, v]) => ({
93
+ ...a,
94
+ [k]: v(this.app),
95
+ });
96
+ Object.assign(this, {
97
+ loaders: this.app
98
+ .container(loaders_1.default)
99
+ .getEntries()
100
+ .reduce(reducer, this.loaders),
101
+ rules: this.app
102
+ .container(rules)
103
+ .getEntries()
104
+ .reduce(reducer, this.rules),
105
+ items: this.app
106
+ .container(items_1.default)
107
+ .getEntries()
108
+ .reduce(reducer, this.items),
86
109
  });
110
+ await (0, config_1.config)(this.app);
87
111
  }
88
112
  /**
89
- * Write final configuration to storage directory
113
+ * Set a rule
114
+ *
115
+ * @param name - rule key
116
+ * @param constructorProperties - rule constructor properties
117
+ * @returns the rule
90
118
  *
91
119
  * @public
92
120
  * @decorator `@bind`
93
121
  */
94
- writeFinalConfig() {
95
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
96
- try {
97
- const filePath = this.app.path('storage', this.config.name, 'webpack.config.js');
98
- this.log('log', {
99
- message: `writing webpack dump to disk`,
100
- suffix: filePath,
101
- });
102
- yield ensureFile(filePath);
103
- yield writeFile(filePath, `module.exports = (${(0, bud_support_1.prettyFormat)(this.config)})`);
104
- }
105
- catch (error) {
106
- this.log('error', `failed to write webpack.config.json`);
107
- this.log(`error`, error);
108
- }
122
+ setRule(name, constructorProperties) {
123
+ Object.assign(this.rules, {
124
+ [name]: this.makeRule(constructorProperties),
109
125
  });
126
+ return this.rules[name];
110
127
  }
111
128
  /**
112
- * Initialize the build rules, loaders, items
129
+ * Make a rule
130
+ *
131
+ * @param constructorProperties - rule constructor properties
132
+ * @returns the rule
113
133
  *
114
134
  * @public
115
135
  * @decorator `@bind`
116
136
  */
117
- init() {
118
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () { });
137
+ makeRule(constructorProperties) {
138
+ return new Rule_1.Rule(this.app, constructorProperties);
139
+ }
140
+ /**
141
+ * Write final configuration to storage directory
142
+ *
143
+ * @public
144
+ * @decorator `@bind`
145
+ */
146
+ async writeFinalConfig() {
147
+ try {
148
+ const filePath = this.app.path('storage', this.config.name, 'webpack.config.js');
149
+ this.log('log', {
150
+ message: `writing webpack dump to disk`,
151
+ suffix: filePath,
152
+ });
153
+ await ensureFile(filePath);
154
+ await writeFile(filePath, `module.exports = (${(0, bud_support_1.prettyFormat)(this.config)})`);
155
+ }
156
+ catch (error) {
157
+ this.log('error', `failed to write webpack.config.json`);
158
+ this.log(`error`, error);
159
+ }
119
160
  }
120
161
  }
121
- (0, tslib_1.__decorate)([
162
+ __decorate([
122
163
  bud_support_1.bind
123
164
  ], Build.prototype, "registered", null);
124
- (0, tslib_1.__decorate)([
165
+ __decorate([
125
166
  bud_support_1.bind
126
167
  ], Build.prototype, "make", null);
127
- (0, tslib_1.__decorate)([
168
+ __decorate([
128
169
  bud_support_1.bind
129
170
  ], Build.prototype, "register", null);
130
- (0, tslib_1.__decorate)([
171
+ __decorate([
131
172
  bud_support_1.bind
132
- ], Build.prototype, "writeFinalConfig", null);
133
- (0, tslib_1.__decorate)([
173
+ ], Build.prototype, "setRule", null);
174
+ __decorate([
134
175
  bud_support_1.bind
135
- ], Build.prototype, "init", null);
176
+ ], Build.prototype, "makeRule", null);
177
+ __decorate([
178
+ bud_support_1.bind
179
+ ], Build.prototype, "writeFinalConfig", null);
136
180
  exports.Build = Build;
137
- //# sourceMappingURL=index.js.map
@@ -8,16 +8,15 @@ const Item_1 = require("../Item");
8
8
  */
9
9
  exports.default = {
10
10
  /**
11
- * asset handler factory
11
+ * .css handler factory
12
12
  *
13
13
  * @public
14
14
  */
15
- asset: () => new Item_1.Item({
16
- loader: ({ build }) => build.loaders.file,
17
- options: app => ({
18
- name: `assets/${app.store.is('features.hash', true) && app.isProduction
19
- ? app.store.get('hashFormat')
20
- : app.store.get('fileFormat')}.[ext]`,
15
+ css: () => new Item_1.Item({
16
+ loader: ({ build }) => build.loaders.css,
17
+ options: ({ hooks }) => ({
18
+ importLoaders: 1,
19
+ sourceMap: hooks.filter('build.devtool') ? true : false,
21
20
  }),
22
21
  }),
23
22
  /**
@@ -25,11 +24,13 @@ exports.default = {
25
24
  *
26
25
  * @public
27
26
  */
28
- css: () => new Item_1.Item({
27
+ cssModule: () => new Item_1.Item({
29
28
  loader: ({ build }) => build.loaders.css,
30
29
  options: ({ hooks }) => ({
31
- sourceMap: hooks.filter('build.devtool') ? true : false,
32
30
  importLoaders: 1,
31
+ localIdentName: '[name]__[local]___[hash:base64:5]',
32
+ modules: true,
33
+ sourceMap: hooks.filter('build.devtool') ? true : false,
33
34
  }),
34
35
  }),
35
36
  /**
@@ -71,7 +72,6 @@ exports.default = {
71
72
  */
72
73
  minicss: () => new Item_1.Item({
73
74
  loader: ({ build }) => build.loaders.minicss,
74
- options: ({ store }) => ({}),
75
75
  }),
76
76
  /**
77
77
  * Factory {@link Item} for raw
@@ -101,13 +101,10 @@ exports.default = {
101
101
  */
102
102
  [`resolve-url`]: () => new Item_1.Item({
103
103
  loader: ({ build }) => build.loaders['resolve-url'],
104
- options: ({ path, hooks }) => {
105
- var _a;
106
- return ({
107
- root: path('src'),
108
- sourceMap: (_a = hooks.filter('build.devtool')) !== null && _a !== void 0 ? _a : false,
109
- });
110
- },
104
+ options: ({ path, hooks }) => ({
105
+ root: path('src'),
106
+ sourceMap: hooks.filter('build.devtool') ?? false,
107
+ }),
111
108
  }),
112
109
  /**
113
110
  * Factory {@link Item} for xml
@@ -118,4 +115,3 @@ exports.default = {
118
115
  loader: ({ build }) => build.loaders.xml,
119
116
  }),
120
117
  };
121
- //# sourceMappingURL=items.js.map
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const mini_css_extract_plugin_1 = (0, tslib_1.__importDefault)(require("mini-css-extract-plugin"));
6
+ const mini_css_extract_plugin_1 = __importDefault(require("mini-css-extract-plugin"));
5
7
  const Loader_1 = require("../Loader");
6
8
  exports.default = {
7
9
  /**
@@ -55,4 +57,3 @@ exports.default = {
55
57
  */
56
58
  xml: () => new Loader_1.Loader(require.resolve('xml-loader')),
57
59
  };
58
- //# sourceMappingURL=loaders.js.map
@@ -1,143 +1,178 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.js = exports.css = exports.json5 = exports.yml = exports.toml = exports.xml = exports.csv = exports.html = exports.svg = exports.font = exports.image = void 0;
3
+ exports.toml = exports.xml = exports.csv = exports.html = exports.yml = exports.json = exports.font = exports.svg = exports.webp = exports.image = exports.cssModule = exports.css = exports.js = void 0;
4
4
  const bud_support_1 = require("@roots/bud-support");
5
- const Rule_1 = require("../Rule");
6
5
  /**
7
- * Returns {@link Rule} for `asset/resource`
6
+ * .js rule
8
7
  *
9
8
  * @public
10
9
  */
11
- const image = () => new Rule_1.Rule({
12
- test: ({ store }) => store.get('patterns.image'),
13
- exclude: ({ store }) => store.get('patterns.modules'),
14
- type: 'asset/resource',
15
- generator: app => ({
16
- filename: `assets/${app.store.is('features.hash', true) && app.isProduction
17
- ? app.store.get('hashFormat')
18
- : app.store.get('fileFormat')}[ext]`,
19
- }),
20
- });
21
- exports.image = image;
10
+ const js = (app) => app.build
11
+ .makeRule()
12
+ .setTest(({ store }) => store.get('patterns.js'))
13
+ .setInclude(({ path }) => path('src'))
14
+ .setUse([]);
15
+ exports.js = js;
22
16
  /**
23
- * Returns {@link Rule} for `.woff`/`.otf` handling
17
+ * .css rule
24
18
  *
25
19
  * @public
26
20
  */
27
- const font = () => new Rule_1.Rule({
28
- test: ({ store }) => store.get('patterns.font'),
29
- exclude: ({ store }) => store.get('patterns.modules'),
30
- use: ({ build }) => [build.items['resolve-url']],
31
- });
32
- exports.font = font;
21
+ const css = (app) => app.build
22
+ .makeRule()
23
+ .setTest(({ store }) => store.get('patterns.css'))
24
+ .setInclude(({ path }) => path('src'))
25
+ .setUse(({ isProduction, build }) => [
26
+ isProduction ? build.items.minicss : build.items.style,
27
+ build.items.css,
28
+ ]);
29
+ exports.css = css;
33
30
  /**
34
- * Returns {@link Rule} for `.svg` handling
31
+ * .module.css rule
35
32
  *
36
33
  * @public
37
34
  */
38
- const svg = () => new Rule_1.Rule({
39
- test: ({ store }) => store.get('patterns.svg'),
40
- exclude: ({ store }) => store.get('patterns.modules'),
41
- type: 'asset/resource',
42
- generator: app => ({
43
- filename: `assets/${app.store.is('features.hash', true) && app.isProduction
44
- ? app.store.get('hashFormat')
45
- : app.store.get('fileFormat')}[ext]`,
46
- }),
47
- });
48
- exports.svg = svg;
35
+ const cssModule = (app) => app.build
36
+ .makeRule()
37
+ .setTest(({ store }) => store.get('patterns.cssModule'))
38
+ .setInclude(({ path }) => path('src'))
39
+ .setUse(({ isProduction, build }) => [
40
+ isProduction ? build.items.minicss : build.items.style,
41
+ build.items.cssModule,
42
+ ]);
43
+ exports.cssModule = cssModule;
49
44
  /**
50
- * Returns {@link Rule} for `.html` handling
45
+ * .jpg, .jpeg, .png, .gif rule
51
46
  *
52
47
  * @public
53
48
  */
54
- const html = () => new Rule_1.Rule({
55
- test: ({ store }) => store.get('patterns.html'),
56
- use: ({ build }) => [build.items.html],
57
- });
58
- exports.html = html;
49
+ const image = (app) => app.build
50
+ .makeRule()
51
+ .setTest(({ store }) => store.get('patterns.image'))
52
+ .setExclude(({ store }) => store.get('patterns.modules'))
53
+ .setType('asset/resource')
54
+ .setGenerator(app => ({
55
+ filename: app.store.is('features.hash', true) && app.isProduction
56
+ ? `images/${app.store.get('hashFormat')}[ext]`
57
+ : `images/${app.store.get('fileFormat')}[ext]`,
58
+ }));
59
+ exports.image = image;
59
60
  /**
60
- * Returns {@link Rule} for `.csv` handling
61
+ * .webp assets factorry
62
+ *
63
+ * @remarks
64
+ * Returns {@link Rule} for `asset/resource`
61
65
  *
62
66
  * @public
63
67
  */
64
- const csv = () => new Rule_1.Rule({
65
- test: ({ store }) => store.get('patterns.csv'),
66
- use: ({ build }) => [build.items.csv],
67
- });
68
- exports.csv = csv;
68
+ const webp = (app) => app.build
69
+ .makeRule()
70
+ .setTest(({ store }) => store.get('patterns.webp'))
71
+ .setType('asset/resource')
72
+ .setGenerator(app => ({
73
+ filename: `webp/${app.store.is('features.hash', true) && app.isProduction
74
+ ? app.store.get('hashFormat')
75
+ : app.store.get('fileFormat')}[ext]`,
76
+ }));
77
+ exports.webp = webp;
69
78
  /**
70
- * Returns {@link Rule} for `.xml` handling
79
+ * Returns {@link Rule} for `.woff`/`.otf` handling
80
+ * .svg rule
71
81
  *
72
82
  * @public
73
83
  */
74
- const xml = () => new Rule_1.Rule({
75
- test: ({ store }) => store.get('patterns.xml'),
76
- use: ({ build }) => [build.items.xml],
77
- });
78
- exports.xml = xml;
84
+ const svg = (app) => app.build
85
+ .makeRule()
86
+ .setTest(({ store }) => store.get('patterns.svg'))
87
+ .setType('asset/resource')
88
+ .setGenerator(app => ({
89
+ filename: app.store.is('features.hash', true) && app.isProduction
90
+ ? `svg/${app.store.get('hashFormat')}[ext]`
91
+ : `svg/${app.store.get('fileFormat')}[ext]`,
92
+ }));
93
+ exports.svg = svg;
79
94
  /**
80
- * Returns {@link Rule} for `.toml` handling
95
+ * .woff, .woff2, .otf rule
81
96
  *
82
97
  * @public
83
98
  */
84
- const toml = () => new Rule_1.Rule({
85
- test: ({ store }) => store.get('patterns.toml'),
86
- type: () => 'json',
87
- parser: () => ({
88
- parse: bud_support_1.toml.parse,
89
- }),
90
- });
91
- exports.toml = toml;
99
+ const font = (app) => app.build
100
+ .makeRule()
101
+ .setType('asset')
102
+ .setTest(({ store }) => store.get('patterns.font'))
103
+ .setInclude(({ path }) => path('src'))
104
+ .setGenerator(app => ({
105
+ filename: app.store.is('features.hash', true) && app.isProduction
106
+ ? `fonts/${app.store.get('hashFormat')}[ext]`
107
+ : `fonts/${app.store.get('fileFormat')}[ext]`,
108
+ }));
109
+ exports.font = font;
110
+ /**
111
+ * Returns {@link Rule} for `.jsonc` handling
112
+ *
113
+ * @public
114
+ */
115
+ const json = (app) => app.build
116
+ .makeRule()
117
+ .setType('json')
118
+ .setInclude(({ path }) => path('src'))
119
+ .setTest(({ store }) => store.get('patterns.json'))
120
+ .setParser({ parse: bud_support_1.json5.parse });
121
+ exports.json = json;
92
122
  /**
93
123
  * Returns {@link Rule} for `.yml` / `.yaml` handling
94
124
  *
95
125
  * @public
96
126
  */
97
- const yml = () => new Rule_1.Rule({
98
- test: ({ store }) => store.get('patterns.yml'),
99
- type: 'json',
100
- parser: () => ({
101
- parse: bud_support_1.yaml.parse,
102
- }),
103
- });
127
+ const yml = (app) => app.build
128
+ .makeRule()
129
+ .setType('json')
130
+ .setInclude(({ path }) => path('src'))
131
+ .setTest(({ store }) => store.get('patterns.yml'))
132
+ .setParser({ parse: bud_support_1.yaml.parse });
104
133
  exports.yml = yml;
105
134
  /**
106
- * Returns {@link Rule} for `.jsonc` handling
135
+ * Returns {@link Rule} for `.html` handling
107
136
  *
108
137
  * @public
109
138
  */
110
- const json5 = () => new Rule_1.Rule({
111
- test: ({ store }) => store.get('patterns.json5'),
112
- type: 'json',
113
- parser: () => ({
114
- parse: bud_support_1.json5.parse,
115
- }),
116
- });
117
- exports.json5 = json5;
139
+ const html = (app) => app.build
140
+ .makeRule()
141
+ .setInclude(({ path }) => path('src'))
142
+ .setTest(({ store }) => store.get('patterns.html'))
143
+ .setUse(({ build }) => [build.items.html]);
144
+ exports.html = html;
118
145
  /**
119
- * Returns {@link Rule} for `.css` handling
146
+ * Returns {@link Rule} for `.csv` handling
120
147
  *
121
148
  * @public
122
149
  */
123
- const css = () => new Rule_1.Rule({
124
- test: ({ store }) => store.get('patterns.css'),
125
- exclude: ({ store }) => store.get('patterns.modules'),
126
- use: ({ isProduction, build }) => [
127
- isProduction ? build.items.minicss : build.items.style,
128
- build.items.css,
129
- ],
130
- });
131
- exports.css = css;
150
+ const csv = (app) => app.build
151
+ .makeRule()
152
+ .setInclude(({ path }) => path('src'))
153
+ .setTest(({ store }) => store.get('patterns.csv'))
154
+ .setUse(({ build }) => [build.items.csv]);
155
+ exports.csv = csv;
132
156
  /**
133
- * Returns {@link Rule} for `.js` handling
157
+ * Returns {@link Rule} for `.xml` handling
134
158
  *
135
159
  * @public
136
160
  */
137
- const js = () => new Rule_1.Rule({
138
- test: ({ store }) => store.get('patterns.js'),
139
- exclude: ({ store }) => store.get('patterns.modules'),
140
- use: () => [],
141
- });
142
- exports.js = js;
143
- //# sourceMappingURL=rules.js.map
161
+ const xml = (app) => app.build
162
+ .makeRule()
163
+ .setInclude(({ path }) => path('src'))
164
+ .setTest(({ store }) => store.get('patterns.xml'))
165
+ .setUse(({ build }) => [build.items.xml]);
166
+ exports.xml = xml;
167
+ /**
168
+ * Returns {@link Rule} for `.toml` handling
169
+ *
170
+ * @public
171
+ */
172
+ const toml = (app) => app.build
173
+ .makeRule()
174
+ .setType('json')
175
+ .setInclude(({ path }) => path('src'))
176
+ .setTest(({ store }) => store.get('patterns.html'))
177
+ .setParser({ parse: bud_support_1.toml.parse });
178
+ exports.toml = toml;