@driveflux/fab 1.0.0-next.1 → 1.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.
@@ -1,14 +1,14 @@
1
1
 
2
2
  
3
- > @driveflux/fab@1.0.0-next.1 build /Users/flux/Projects/flux/packages/fab
3
+ > @driveflux/fab@1.0.0 build /Users/flux/Projects/flux/packages/fab
4
4
  > pnpm build:js && pnpm build:types
5
5
 
6
6
 
7
- > @driveflux/fab@1.0.0-next.1 build:js /Users/flux/Projects/flux/packages/fab
7
+ > @driveflux/fab@1.0.0 build:js /Users/flux/Projects/flux/packages/fab
8
8
  > swc src --strip-leading-paths -d dist
9
9
 
10
- Successfully compiled: 7 files with swc (341.42ms)
10
+ Successfully compiled: 7 files with swc (262.87ms)
11
11
 
12
- > @driveflux/fab@1.0.0-next.1 build:types /Users/flux/Projects/flux/packages/fab
12
+ > @driveflux/fab@1.0.0 build:types /Users/flux/Projects/flux/packages/fab
13
13
  > tsc --build --emitDeclarationOnly
14
14
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @driveflux/fab
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 4.5 pre-release
8
+
9
+ ### Patch Changes
10
+
11
+ - verion bump + minor improvements
12
+ - Bump all versions
13
+ - Version bump
14
+
15
+ ## 1.0.0-next.2
16
+
17
+ ### Patch Changes
18
+
19
+ - Version bump
20
+
3
21
  ## 1.0.0-next.1
4
22
 
5
23
  ### Patch Changes
package/dist/build.d.ts CHANGED
@@ -5,15 +5,17 @@ interface BuildOptions extends BaseOptions, MakeBaseExportsOptions, CleanOptions
5
5
  noTypes?: boolean;
6
6
  noCJS?: boolean;
7
7
  noESM?: boolean;
8
+ copyVerbatim?: string[];
8
9
  }
9
10
  interface MakeBaseExportsOptions extends BaseOptions {
10
11
  noTypes?: boolean;
11
12
  exports?: PackageJson['exports'];
12
13
  }
13
- export declare const build: (options?: BuildOptions) => Promise<void>;
14
- export declare const buildTypes: (options?: BaseOptions) => Promise<void>;
15
- export declare const buildCjs: (options?: BaseOptions) => Promise<void>;
16
- export declare const makeBaseExports: (options?: MakeBaseExportsOptions) => Promise<string[]>;
17
- export declare const buildEsm: (options?: BaseOptions) => Promise<void>;
14
+ export declare const build: (rawOptions?: BuildOptions) => Promise<void>;
15
+ export declare const copyVerbatim: (rawOptions?: BuildOptions) => Promise<void>;
16
+ export declare const buildTypes: (rawOptions?: BaseOptions) => Promise<void>;
17
+ export declare const buildCjs: (rawOptions?: BaseOptions) => Promise<void>;
18
+ export declare const makeBaseExports: (rawOptions?: MakeBaseExportsOptions) => Promise<string[]>;
19
+ export declare const buildEsm: (rawOptions?: BaseOptions) => Promise<void>;
18
20
  export {};
19
21
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAS,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAK7C,UAAU,YAAa,SAAQ,WAAW,EAAE,sBAAsB,EAAE,YAAY;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,sBAAuB,SAAQ,WAAW;IAClD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACjC;AAaD,eAAO,MAAM,KAAK,aAAmB,YAAY,kBAsBhD,CAAA;AAED,eAAO,MAAM,UAAU,aAAmB,WAAW,kBAGpD,CAAA;AAED,eAAO,MAAM,QAAQ,aAAmB,WAAW,kBAelD,CAAA;AAED,eAAO,MAAM,eAAe,aAAmB,sBAAsB,sBAmBpE,CAAA;AAwKD,eAAO,MAAM,QAAQ,aAAmB,WAAW,kBAIlD,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAS,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAK7C,UAAU,YAAa,SAAQ,WAAW,EAAE,sBAAsB,EAAE,YAAY;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,UAAU,sBAAuB,SAAQ,WAAW;IAClD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACjC;AAaD,eAAO,MAAM,KAAK,gBAAuB,YAAY,kBA2BpD,CAAA;AAED,eAAO,MAAM,YAAY,gBAAuB,YAAY,kBAc3D,CAAA;AAED,eAAO,MAAM,UAAU,gBAAuB,WAAW,kBAIxD,CAAA;AAED,eAAO,MAAM,QAAQ,gBAAuB,WAAW,kBAgBtD,CAAA;AAED,eAAO,MAAM,eAAe,gBAAuB,sBAAsB,sBAoBxE,CAAA;AAgLD,eAAO,MAAM,QAAQ,gBAAuB,WAAW,kBAKtD,CAAA"}
package/dist/build.js CHANGED
@@ -169,6 +169,7 @@ function _ts_generator(thisArg, body) {
169
169
  }
170
170
  }
171
171
  import fg from "fast-glob";
172
+ import merge from "lodash.merge";
172
173
  import assert from "node:assert";
173
174
  import fs from "node:fs/promises";
174
175
  import path from "node:path";
@@ -176,13 +177,12 @@ import { clean } from "./clean.js";
176
177
  import { ensureDir, getDefaultOptions, runCommand, validatePackageJson } from "./utils.js";
177
178
  var glob = fg.glob;
178
179
  export var build = function() {
179
- var _ref = _async_to_generator(function() {
180
+ var _ref = _async_to_generator(function(rawOptions) {
180
181
  var options, promises;
181
- var _arguments = arguments;
182
182
  return _ts_generator(this, function(_state) {
183
183
  switch(_state.label){
184
184
  case 0:
185
- options = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : getDefaultOptions();
185
+ options = merge({}, getDefaultOptions(), rawOptions);
186
186
  // Cleanup first
187
187
  return [
188
188
  4,
@@ -200,6 +200,7 @@ export var build = function() {
200
200
  if (!options.noCJS) {
201
201
  promises.push(buildCjs(options));
202
202
  }
203
+ promises.push(copyVerbatim(options));
203
204
  // Build necessary files
204
205
  return [
205
206
  4,
@@ -207,31 +208,106 @@ export var build = function() {
207
208
  ];
208
209
  case 2:
209
210
  _state.sent();
210
- // Make exports for CJS
211
+ if (!!options.noCJS) return [
212
+ 3,
213
+ 4
214
+ ];
211
215
  return [
212
216
  4,
213
217
  makeBaseExports(options)
214
218
  ];
215
219
  case 3:
216
220
  _state.sent();
221
+ _state.label = 4;
222
+ case 4:
223
+ return [
224
+ 2
225
+ ];
226
+ }
227
+ });
228
+ });
229
+ return function build(rawOptions) {
230
+ return _ref.apply(this, arguments);
231
+ };
232
+ }();
233
+ export var copyVerbatim = function() {
234
+ var _ref = _async_to_generator(function(rawOptions) {
235
+ var _options_copyVerbatim, options, _options_cwd, cwd, _options_destination, destination;
236
+ return _ts_generator(this, function(_state) {
237
+ switch(_state.label){
238
+ case 0:
239
+ options = merge({}, getDefaultOptions(), rawOptions);
240
+ if (!((_options_copyVerbatim = options.copyVerbatim) === null || _options_copyVerbatim === void 0 ? void 0 : _options_copyVerbatim.length)) return [
241
+ 3,
242
+ 2
243
+ ];
244
+ cwd = (_options_cwd = options.cwd) !== null && _options_cwd !== void 0 ? _options_cwd : process.cwd();
245
+ destination = (_options_destination = options.destination) !== null && _options_destination !== void 0 ? _options_destination : getDefaultOptions().destination;
246
+ return [
247
+ 4,
248
+ Promise.all(options.copyVerbatim.map(function() {
249
+ var _ref = _async_to_generator(function(fileOrFolderRaw) {
250
+ var fileOrFolder, targetPath, targetPathCjs;
251
+ return _ts_generator(this, function(_state) {
252
+ switch(_state.label){
253
+ case 0:
254
+ fileOrFolder = "src/".concat(fileOrFolderRaw.replace(/^(\/)*src/, ""));
255
+ targetPath = path.resolve(destination, fileOrFolder).replace("/src", "");
256
+ targetPathCjs = path.resolve(destination, "cjs", fileOrFolder).replace("/src", "");
257
+ return [
258
+ 4,
259
+ ensureDir(path.dirname(targetPath))
260
+ ];
261
+ case 1:
262
+ _state.sent();
263
+ return [
264
+ 4,
265
+ fs.cp(path.resolve(cwd, fileOrFolder), targetPath, {
266
+ recursive: true
267
+ })
268
+ ];
269
+ case 2:
270
+ _state.sent();
271
+ return [
272
+ 4,
273
+ fs.cp(path.resolve(cwd, fileOrFolder), targetPathCjs, {
274
+ recursive: true
275
+ })
276
+ ];
277
+ case 3:
278
+ _state.sent();
279
+ return [
280
+ 2
281
+ ];
282
+ }
283
+ });
284
+ });
285
+ return function(fileOrFolderRaw) {
286
+ return _ref.apply(this, arguments);
287
+ };
288
+ }()))
289
+ ];
290
+ case 1:
291
+ _state.sent();
292
+ _state.label = 2;
293
+ case 2:
217
294
  return [
218
295
  2
219
296
  ];
220
297
  }
221
298
  });
222
299
  });
223
- return function build() {
300
+ return function copyVerbatim(rawOptions) {
224
301
  return _ref.apply(this, arguments);
225
302
  };
226
303
  }();
227
304
  export var buildTypes = function() {
228
- var _ref = _async_to_generator(function() {
305
+ var _ref = _async_to_generator(function(rawOptions) {
229
306
  var options;
230
- var _arguments = arguments;
231
307
  return _ts_generator(this, function(_state) {
232
308
  switch(_state.label){
233
309
  case 0:
234
- options = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : getDefaultOptions();
310
+ options = merge({}, getDefaultOptions(), rawOptions);
235
311
  return [
236
312
  4,
237
313
  validatePackageJson({
@@ -259,18 +335,17 @@ export var buildTypes = function() {
259
335
  }
260
336
  });
261
337
  });
262
- return function buildTypes() {
338
+ return function buildTypes(rawOptions) {
263
339
  return _ref.apply(this, arguments);
264
340
  };
265
341
  }();
266
342
  export var buildCjs = function() {
267
- var _ref = _async_to_generator(function() {
343
+ var _ref = _async_to_generator(function(rawOptions) {
268
344
  var options, _options_cwd, cwd, _options_destination, destination, cjsPath, targetPath;
269
- var _arguments = arguments;
270
345
  return _ts_generator(this, function(_state) {
271
346
  switch(_state.label){
272
347
  case 0:
273
- options = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : getDefaultOptions();
348
+ options = merge({}, getDefaultOptions(), rawOptions);
274
349
  cwd = (_options_cwd = options.cwd) !== null && _options_cwd !== void 0 ? _options_cwd : process.cwd();
275
350
  destination = (_options_destination = options.destination) !== null && _options_destination !== void 0 ? _options_destination : getDefaultOptions().destination;
276
351
  cjsPath = path.resolve(destination, "cjs");
@@ -289,9 +364,9 @@ export var buildCjs = function() {
289
364
  runCommand("pnpm", [
290
365
  "swc",
291
366
  "src",
292
- "--strip-leading-paths",
293
367
  "-C",
294
368
  "module.type=commonjs",
369
+ "--strip-leading-paths",
295
370
  "-d",
296
371
  cjsPath
297
372
  ], {
@@ -319,18 +394,17 @@ export var buildCjs = function() {
319
394
  }
320
395
  });
321
396
  });
322
- return function buildCjs() {
397
+ return function buildCjs(rawOptions) {
323
398
  return _ref.apply(this, arguments);
324
399
  };
325
400
  }();
326
401
  export var makeBaseExports = function() {
327
- var _ref = _async_to_generator(function() {
402
+ var _ref = _async_to_generator(function(rawOptions) {
328
403
  var options, _options_cwd, cwd, exp, _tmp, baseMap;
329
- var _arguments = arguments;
330
404
  return _ts_generator(this, function(_state) {
331
405
  switch(_state.label){
332
406
  case 0:
333
- options = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : getDefaultOptions();
407
+ options = merge({}, getDefaultOptions(), rawOptions);
334
408
  cwd = (_options_cwd = options.cwd) !== null && _options_cwd !== void 0 ? _options_cwd : process.cwd();
335
409
  _tmp = options.exports;
336
410
  if (_tmp) return [
@@ -376,7 +450,7 @@ export var makeBaseExports = function() {
376
450
  }
377
451
  });
378
452
  });
379
- return function makeBaseExports() {
453
+ return function makeBaseExports(rawOptions) {
380
454
  return _ref.apply(this, arguments);
381
455
  };
382
456
  }();
@@ -606,11 +680,6 @@ var resolvePathWithExtension = function() {
606
680
  2,
607
681
  "".concat(targetFile, "/index.").concat(extension)
608
682
  ];
609
- } else {
610
- return [
611
- 2,
612
- "".concat(targetFile, ".").concat(extension)
613
- ];
614
683
  }
615
684
  return [
616
685
  3,
@@ -619,12 +688,25 @@ var resolvePathWithExtension = function() {
619
688
  case 2:
620
689
  e = _state.sent();
621
690
  return [
622
- 2,
623
- "".concat(targetFile, ".").concat(extension)
691
+ 3,
692
+ 3
624
693
  ];
625
694
  case 3:
695
+ if (targetFile.endsWith(extension)) {
696
+ return [
697
+ 2,
698
+ targetFile
699
+ ];
700
+ }
701
+ if (targetFile.endsWith(".js")) {
702
+ return [
703
+ 2,
704
+ targetFile.replace(/\.js$/, ".".concat(extension))
705
+ ];
706
+ }
626
707
  return [
627
- 2
708
+ 2,
709
+ "".concat(targetFile, ".").concat(extension)
628
710
  ];
629
711
  }
630
712
  });
@@ -677,13 +759,12 @@ var parseExportPath = function() {
677
759
  };
678
760
  }();
679
761
  export var buildEsm = function() {
680
- var _ref = _async_to_generator(function() {
762
+ var _ref = _async_to_generator(function(rawOptions) {
681
763
  var options, _options_destination;
682
- var _arguments = arguments;
683
764
  return _ts_generator(this, function(_state) {
684
765
  switch(_state.label){
685
766
  case 0:
686
- options = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : getDefaultOptions();
767
+ options = merge({}, getDefaultOptions(), rawOptions);
687
768
  return [
688
769
  4,
689
770
  runCommand("pnpm", [
@@ -704,7 +785,7 @@ export var buildEsm = function() {
704
785
  }
705
786
  });
706
787
  });
707
- return function buildEsm() {
788
+ return function buildEsm(rawOptions) {
708
789
  return _ref.apply(this, arguments);
709
790
  };
710
791
  }();
package/dist/clean.js CHANGED
@@ -195,9 +195,9 @@ export var clean = function() {
195
195
  ];
196
196
  case 1:
197
197
  _state.sent();
198
- doNotCleanup = rawDoNotCleanup.map(function(f) {
198
+ doNotCleanup = (rawDoNotCleanup === null || rawDoNotCleanup === void 0 ? void 0 : rawDoNotCleanup.map(function(f) {
199
199
  return "!".concat(f);
200
- });
200
+ })) || [];
201
201
  if (!all) return [
202
202
  3,
203
203
  3
package/dist/config.d.ts CHANGED
@@ -7,13 +7,21 @@ interface ParseConfigOptions {
7
7
  }
8
8
  declare const ConfigValidation: z.ZodObject<{
9
9
  doNotCleanup: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
+ noCJS: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
11
+ copyVerbatim: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
12
  }, "strip", z.ZodTypeAny, {
11
13
  doNotCleanup?: string[] | undefined;
14
+ noCJS?: boolean | undefined;
15
+ copyVerbatim?: string[] | undefined;
12
16
  }, {
13
17
  doNotCleanup?: string[] | undefined;
18
+ noCJS?: boolean | undefined;
19
+ copyVerbatim?: string[] | undefined;
14
20
  }>;
15
21
  export declare const parseConfig: (options?: ParseConfigOptions) => Promise<{
16
22
  doNotCleanup?: string[] | undefined;
23
+ noCJS?: boolean | undefined;
24
+ copyVerbatim?: string[] | undefined;
17
25
  }>;
18
26
  export {};
19
27
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAErD,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,QAAA,MAAM,gBAAgB;;;;;;EAEV,CAAA;AAEZ,eAAO,MAAM,WAAW,aAAoB,kBAAkB;;EAiB7D,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAErD,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,QAAA,MAAM,gBAAgB;;;;;;;;;;;;EAIV,CAAA;AAEZ,eAAO,MAAM,WAAW,aAAoB,kBAAkB;;;;EAiB7D,CAAA"}
package/dist/config.js CHANGED
@@ -126,7 +126,9 @@ import fs from "node:fs/promises";
126
126
  import path from "node:path";
127
127
  import { z } from "zod";
128
128
  var ConfigValidation = z.object({
129
- doNotCleanup: z.array(z.string())
129
+ doNotCleanup: z.array(z.string()),
130
+ noCJS: z.boolean().optional(),
131
+ copyVerbatim: z.array(z.string())
130
132
  }).partial();
131
133
  export var parseConfig = function() {
132
134
  var _ref = _async_to_generator(function(options) {
package/dist/utils.d.ts CHANGED
@@ -14,6 +14,6 @@ export declare const ensureDir: (dir: string) => Promise<void>;
14
14
  export declare const runCommand: (cmd: string, args: string[], options: SpawnOptions) => Promise<unknown>;
15
15
  export declare const validatePackageJson: ({ command, cwd: providedCwd }: ValidatePackageOptions) => Promise<void>;
16
16
  export declare const getBaseDir: () => string;
17
- export declare const getDefaultOptions: () => Required<BaseOptions & Config>;
17
+ export declare const getDefaultOptions: () => Required<BaseOptions> & Config;
18
18
  export {};
19
19
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,oBAAoB,CAAA;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,UAAU,sBAAuB,SAAQ,WAAW;IAClD,OAAO,EAAE,MAAM,OAAO,aAAa,CAAA;CACpC;AAED,QAAA,MAAM,aAAa;;;;CAIT,CAAA;AAEV,eAAO,MAAM,SAAS,QAAe,MAAM,kBAS1C,CAAA;AAED,eAAO,MAAM,UAAU,QAAe,MAAM,QAAQ,MAAM,EAAE,WAAW,YAAY,qBAelF,CAAA;AAED,eAAO,MAAM,mBAAmB,kCAAyC,sBAAsB,kBA2B9F,CAAA;AAED,eAAO,MAAM,UAAU,cAGtB,CAAA;AAED,eAAO,MAAM,iBAAiB,QAAO,SAAS,WAAW,GAAG,MAAM,CAKrD,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,oBAAoB,CAAA;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,UAAU,sBAAuB,SAAQ,WAAW;IAClD,OAAO,EAAE,MAAM,OAAO,aAAa,CAAA;CACpC;AAED,QAAA,MAAM,aAAa;;;;CAIT,CAAA;AAEV,eAAO,MAAM,SAAS,QAAe,MAAM,kBAS1C,CAAA;AAED,eAAO,MAAM,UAAU,QAAe,MAAM,QAAQ,MAAM,EAAE,WAAW,YAAY,qBAelF,CAAA;AAED,eAAO,MAAM,mBAAmB,kCAAyC,sBAAsB,kBA2B9F,CAAA;AAED,eAAO,MAAM,UAAU,cAGtB,CAAA;AAED,eAAO,MAAM,iBAAiB,QAAO,SAAS,WAAW,CAAC,GAAG,MAMzD,CAAA"}
package/dist/utils.js CHANGED
@@ -303,6 +303,7 @@ export var getDefaultOptions = function() {
303
303
  doNotCleanup: [
304
304
  "src",
305
305
  "bin"
306
- ]
306
+ ],
307
+ noCJS: false
307
308
  };
308
309
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@driveflux/fab",
3
- "version": "1.0.0-next.1",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "bin": {
@@ -14,14 +14,17 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "commander": "^12.0.0",
17
- "fast-glob": "^3.3.2"
17
+ "fast-glob": "^3.3.2",
18
+ "lodash.merge": "^4.6.2"
18
19
  },
19
20
  "devDependencies": {
20
21
  "@swc-node/register": "^1.8.0",
21
22
  "@swc/cli": "^0.3.9",
22
23
  "@swc/core": "^1.4.0",
24
+ "@types/lodash.merge": "^4.6.9",
23
25
  "del": "^7.1.0",
24
26
  "del-cli": "^5.1.0",
27
+ "esbuild": "^0.20.0",
25
28
  "type-fest": "^4.10.2",
26
29
  "zod": "^3.22.4"
27
30
  },
package/src/build.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import fg from 'fast-glob'
2
+ import merge from 'lodash.merge'
2
3
  import assert from 'node:assert'
3
4
  import fs from 'node:fs/promises'
4
5
  import path from 'node:path'
@@ -13,6 +14,7 @@ interface BuildOptions extends BaseOptions, MakeBaseExportsOptions, CleanOptions
13
14
  noTypes?: boolean
14
15
  noCJS?: boolean
15
16
  noESM?: boolean
17
+ copyVerbatim?: string[]
16
18
  }
17
19
 
18
20
  interface MakeBaseExportsOptions extends BaseOptions {
@@ -31,7 +33,8 @@ interface ProcessEntryOptions extends BaseOptions {
31
33
  noCJS?: boolean
32
34
  }
33
35
 
34
- export const build = async (options: BuildOptions = getDefaultOptions()) => {
36
+ export const build = async (rawOptions?: BuildOptions) => {
37
+ const options = merge({}, getDefaultOptions(), rawOptions)
35
38
  // Cleanup first
36
39
  await clean(options)
37
40
 
@@ -48,25 +51,47 @@ export const build = async (options: BuildOptions = getDefaultOptions()) => {
48
51
  promises.push(buildCjs(options))
49
52
  }
50
53
 
54
+ promises.push(copyVerbatim(options))
55
+
51
56
  // Build necessary files
52
57
  await Promise.all(promises)
53
58
 
54
59
  // Make exports for CJS
55
- await makeBaseExports(options)
60
+ if(!options.noCJS) {
61
+ await makeBaseExports(options)
62
+ }
63
+ }
64
+
65
+ export const copyVerbatim = async (rawOptions?: BuildOptions) => {
66
+ const options = merge({}, getDefaultOptions(), rawOptions)
67
+ if(options.copyVerbatim?.length) {
68
+ const cwd = options.cwd ?? process.cwd()
69
+ const destination = options.destination ?? getDefaultOptions().destination
70
+ await Promise.all(options.copyVerbatim.map(async (fileOrFolderRaw) => {
71
+ const fileOrFolder = `src/${fileOrFolderRaw.replace(/^(\/)*src/, '')}`
72
+ const targetPath = path.resolve(destination, fileOrFolder).replace('/src', '')
73
+ const targetPathCjs = path.resolve(destination, 'cjs', fileOrFolder).replace('/src', '')
74
+ await ensureDir(path.dirname(targetPath))
75
+ await fs.cp(path.resolve(cwd, fileOrFolder), targetPath, { recursive: true })
76
+ await fs.cp(path.resolve(cwd, fileOrFolder), targetPathCjs, { recursive: true })
77
+ }))
78
+ }
56
79
  }
57
80
 
58
- export const buildTypes = async (options: BaseOptions = getDefaultOptions()) => {
81
+ export const buildTypes = async (rawOptions?: BaseOptions) => {
82
+ const options = merge({}, getDefaultOptions(), rawOptions)
59
83
  await validatePackageJson({ command: 'tsc', cwd: options.cwd })
60
84
  await runCommand('pnpm', ['tsc', '--emitDeclarationOnly', '--declarationMap'], { cwd: options.cwd })
61
85
  }
62
86
 
63
- export const buildCjs = async (options: BaseOptions = getDefaultOptions()) => {
87
+ export const buildCjs = async (rawOptions?: BaseOptions) => {
88
+ const options = merge({}, getDefaultOptions(), rawOptions)
64
89
  const cwd = options.cwd ?? process.cwd()
65
90
  const destination = options.destination ?? getDefaultOptions().destination
66
91
  const cjsPath = path.resolve(destination, 'cjs')
67
92
  await validatePackageJson({ command: 'swc', cwd })
68
93
  // We start by emitting the CJS files
69
- await runCommand(`pnpm`, ['swc', 'src', '--strip-leading-paths', '-C', 'module.type=commonjs', '-d', cjsPath], { cwd })
94
+ await runCommand(`pnpm`, ['swc', 'src', '-C', 'module.type=commonjs', '--strip-leading-paths', '-d', cjsPath], { cwd })
70
95
  const targetPath = path.resolve(cwd, cjsPath, 'package.json')
71
96
  await ensureDir(path.dirname(targetPath))
72
97
  await fs.writeFile(
@@ -77,7 +102,8 @@ export const buildCjs = async (options: BaseOptions = getDefaultOptions()) => {
77
102
  )
78
103
  }
79
104
 
80
- export const makeBaseExports = async (options: MakeBaseExportsOptions = getDefaultOptions()) => {
105
+ export const makeBaseExports = async (rawOptions?: MakeBaseExportsOptions) => {
106
+ const options = merge({}, getDefaultOptions(), rawOptions)
81
107
  const cwd = options.cwd ?? process.cwd()
82
108
  // Now, we need to read the exports from the package.json and create the cjs references
83
109
  const exp = options.exports || (await parseExports(cwd))
@@ -239,12 +265,20 @@ const resolvePathWithExtension = async (targetFile: string, extension: string) =
239
265
  try {
240
266
  if((await fs.stat(targetFile)).isDirectory()) {
241
267
  return `${targetFile}/index.${extension}`
242
- } else {
243
- return `${targetFile}.${extension}`
244
268
  }
245
269
  } catch(e) {
246
- return `${targetFile}.${extension}`
270
+ // Nothing to do here
247
271
  }
272
+
273
+ if(targetFile.endsWith(extension)) {
274
+ return targetFile
275
+ }
276
+
277
+ if(targetFile.endsWith(`.js`)) {
278
+ return targetFile.replace(/\.js$/, `.${extension}`)
279
+ }
280
+
281
+ return `${targetFile}.${extension}`
248
282
  }
249
283
 
250
284
  const formatImportPath = (exportPath: string): string => {
@@ -264,7 +298,8 @@ const parseExportPath = async (exportPath: string, cwd = process.cwd()): Promise
264
298
  return files.map((f) => path.relative(cwd, f))
265
299
  }
266
300
 
267
- export const buildEsm = async (options: BaseOptions = getDefaultOptions()) => {
301
+ export const buildEsm = async (rawOptions?: BaseOptions) => {
302
+ const options = merge({}, getDefaultOptions(), rawOptions)
268
303
  await runCommand(`pnpm`, ['swc', 'src', '--strip-leading-paths', '-d', options.destination ?? getDefaultOptions().destination], {
269
304
  cwd: options.cwd
270
305
  })
package/src/clean.ts CHANGED
@@ -14,7 +14,7 @@ export const clean = async (rawOptions: CleanOptions = getDefaultOptions()) => {
14
14
  }
15
15
 
16
16
  await validatePackageJson({ command: 'del', cwd })
17
- const doNotCleanup = rawDoNotCleanup.map((f) => `!${f}`)
17
+ const doNotCleanup = rawDoNotCleanup?.map((f) => `!${f}`) || []
18
18
 
19
19
  if (all) {
20
20
  await runCommand('pnpm', ['del', '**/*.cjs', '**/*.d.ts', 'tsconfig.tsbuildinfo', ...doNotCleanup], { cwd })
package/src/config.ts CHANGED
@@ -12,6 +12,8 @@ interface ParseConfigOptions {
12
12
 
13
13
  const ConfigValidation = z.object({
14
14
  doNotCleanup: z.array(z.string()),
15
+ noCJS: z.boolean().optional(),
16
+ copyVerbatim: z.array(z.string()),
15
17
  }).partial()
16
18
 
17
19
  export const parseConfig = async (options?: ParseConfigOptions) => {
package/src/utils.ts CHANGED
@@ -76,9 +76,10 @@ export const getBaseDir = () => {
76
76
  return path.resolve(path.dirname(decodeURIComponent(new URL(import.meta.url).pathname)), '..')
77
77
  }
78
78
 
79
- export const getDefaultOptions = (): Required<BaseOptions & Config> =>
79
+ export const getDefaultOptions = (): Required<BaseOptions> & Config =>
80
80
  ({
81
81
  cwd: process.cwd(),
82
82
  destination: 'dist',
83
- doNotCleanup: ['src', 'bin']
84
- }) as const
83
+ doNotCleanup: ['src', 'bin'],
84
+ noCJS: false,
85
+ })