@@ -4467,8 +4467,10 @@ val suffix_rei : string
4467
4467
val suffix_d : string
4468
4468
val suffix_js : string
4469
4469
val suffix_mjs : string
4470
+ val suffix_cjs : string
4470
4471
val suffix_bs_js : string
4471
4472
val suffix_bs_mjs : string
4473
+ val suffix_bs_cjs : string
4472
4474
(* val suffix_re_js : string *)
4473
4475
val suffix_gen_js : string
4474
4476
val suffix_gen_tsx: string
@@ -4606,10 +4608,13 @@ let suffix_reast = ".reast"
4606
4608
let suffix_reiast = ".reiast"
4607
4609
let suffix_mliast_simple = ".mliast_simple"
4608
4610
let suffix_d = ".d"
4611
+
4609
4612
let suffix_js = ".js"
4610
4613
let suffix_mjs = ".mjs"
4614
+ let suffix_cjs = ".cjs"
4611
4615
let suffix_bs_js = ".bs.js"
4612
4616
let suffix_bs_mjs = ".bs.mjs"
4617
+ let suffix_bs_cjs = ".bs.cjs"
4613
4618
(* let suffix_re_js = ".re.js" *)
4614
4619
let suffix_gen_js = ".gen.js"
4615
4620
let suffix_gen_tsx = ".gen.tsx"
@@ -7072,15 +7077,27 @@ let prefix_of_format (x : format) =
7072
7077
7073
7078
7074
7079
let bad_suffix_message_warn suffix =
7080
+ let open Literals in
7075
7081
Bsb_log.warn
7076
- "@{<warning>UNSUPPORTED@}: package-specs: extension `%s` is unsupported@;\
7077
- ; consider one of: %s, %s, %s, or %s@." suffix Literals. suffix_js
7078
- Literals.suffix_mjs Literals. suffix_bs_js Literals. suffix_bs_mjs
7082
+ "@{<warning>UNSUPPORTED@}: package-specs: extension `%s` is unsupported; @;\
7083
+ consider one of: %s, %s, %s; %s, %s, or %s@." suffix suffix_js suffix_mjs
7084
+ suffix_cjs suffix_bs_js suffix_bs_mjs suffix_bs_cjs
7079
7085
7080
7086
7081
7087
let supported_suffix (x : string) =
7082
- if not (List.mem x Literals.[ suffix_js; suffix_mjs; suffix_bs_js; suffix_bs_mjs ]) then
7083
- bad_suffix_message_warn x;
7088
+ if
7089
+ not
7090
+ (List.mem x
7091
+ Literals.
7092
+ [
7093
+ suffix_js;
7094
+ suffix_mjs;
7095
+ suffix_cjs;
7096
+ suffix_bs_js;
7097
+ suffix_bs_mjs;
7098
+ suffix_bs_cjs;
7099
+ ])
7100
+ then bad_suffix_message_warn x;
7084
7101
x
7085
7102
7086
7103
@@ -7096,7 +7113,9 @@ let default_suffix format in_source =
7096
7113
7097
7114
module SS = Set.Make (String)
7098
7115
7099
- let supported_bs_suffixes = Literals.[ suffix_bs_js; suffix_bs_mjs ]
7116
+ let supported_bs_suffixes =
7117
+ Literals.[ suffix_bs_js; suffix_bs_mjs; suffix_bs_cjs ]
7118
+
7100
7119
7101
7120
(** Produces a [list] of supported, bs-prefixed file-suffixes used in
7102
7121
[in-source] package-specs. *)
@@ -7111,21 +7130,23 @@ let extract_in_source_bs_suffixes (package_specs : Spec_set.t) =
7111
7130
7112
7131
7113
7132
let rec from_array (arr : Ext_json_types.t array) : Spec_set.t =
7114
- let spec = ref Spec_set.empty in
7115
- let has_in_source = ref false in
7133
+ let specs = ref Spec_set.empty in
7116
7134
Ext_array.iter arr (fun x ->
7117
- let result = from_json_single x in
7118
- if result.in_source then
7119
- if not !has_in_source then has_in_source := true
7120
- else
7121
- Bsb_exception.errorf ~loc:(Ext_json.loc_of x)
7122
- "package-specs: we've detected two module formats that are both \
7123
- configured to be in-source.";
7124
- spec := Spec_set.add result !spec);
7125
- !spec
7126
-
7127
-
7128
- (* TODO: FIXME: better API without mutating *)
7135
+ let spec = from_json_single x in
7136
+ if
7137
+ Spec_set.exists
7138
+ (fun o -> spec.in_source == o.in_source && String.equal spec.suffix o.suffix)
7139
+ !specs
7140
+ then
7141
+ Bsb_exception.errorf ~loc:(Ext_json.loc_of x)
7142
+ "package-specs: two conflicting module formats with the extension \
7143
+ `%s` are both configured to be in-source."
7144
+ spec.suffix
7145
+ else specs := Spec_set.add spec !specs);
7146
+ !specs
7147
+
7148
+
7149
+ (* FIXME: better API without mutating *)
7129
7150
and from_json_single (x : Ext_json_types.t) : spec =
7130
7151
match x with
7131
7152
| Str { str = format; loc } ->
@@ -7187,8 +7208,7 @@ let package_flag ({ format; in_source; suffix } : spec) dir =
7187
7208
Ext_string.single_colon suffix)
7188
7209
7189
7210
7190
- let flags_of_package_specs (package_specs : t) (dirname : string) :
7191
- string =
7211
+ let flags_of_package_specs (package_specs : t) (dirname : string) : string =
7192
7212
Spec_set.fold
7193
7213
(fun format acc -> Ext_string.inter2 acc (package_flag format dirname))
7194
7214
package_specs Ext_string.empty
@@ -10511,7 +10531,7 @@ let classify_suffix (x : string) : suffix_kind =
10511
10531
if i >= 0 then Cmti i else Not_any
10512
10532
10513
10533
10514
- (** Attempt to delete any [.bs.m ?js] files for a given artifact. *)
10534
+ (** Attempt to delete any [.bs.[cm] ?js] files for a given artifact. *)
10515
10535
let unlink_bs_suffixes context artifact =
10516
10536
List.iter
10517
10537
(fun suffix -> try_unlink (Filename.concat context.cwd (artifact ^ suffix)))
0 commit comments