@crowdin/app-project-module 3.0.0 → 3.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 (37) hide show
  1. package/out/app-test/integration/index.js +3 -3
  2. package/out/app-test/integration/mocks/mock-axios.js +5 -4
  3. package/out/app-test/integration/mocks/mock-crowdin-api-client.js +6 -6
  4. package/out/app-test/integration/update-crowdin.js +5 -5
  5. package/out/app-test/integration/update-integration.js +5 -5
  6. package/out/modules/integration/handlers/user-error-detail.d.ts +2 -0
  7. package/out/modules/integration/handlers/user-error-detail.js +48 -0
  8. package/out/modules/integration/handlers/user-errors.d.ts +6 -0
  9. package/out/modules/integration/handlers/user-errors.js +39 -17
  10. package/out/modules/integration/index.js +8 -0
  11. package/out/static/ui/error.bundle.js +286 -91
  12. package/out/static/ui/error.bundle.js.map +1 -1
  13. package/out/static/ui/form.bundle.js +398 -289
  14. package/out/static/ui/form.bundle.js.map +1 -1
  15. package/out/static/ui/login.bundle.js +351 -121
  16. package/out/static/ui/login.bundle.js.map +1 -1
  17. package/out/static/ui/main.bundle.js +832 -386
  18. package/out/static/ui/main.bundle.js.map +1 -1
  19. package/out/static/ui/subscription.bundle.js +277 -88
  20. package/out/static/ui/subscription.bundle.js.map +1 -1
  21. package/out/storage/drizzle/d1/index.js +2 -1
  22. package/out/storage/drizzle/d1/migrations/user-errors-indexes.d.ts +7 -0
  23. package/out/storage/drizzle/d1/migrations/user-errors-indexes.js +27 -0
  24. package/out/storage/drizzle/index.d.ts +8 -1
  25. package/out/storage/drizzle/index.js +75 -4
  26. package/out/storage/drizzle/postgresql/config.d.ts +3 -2
  27. package/out/storage/drizzle/postgresql/config.js +2 -1
  28. package/out/storage/drizzle/postgresql/migrations/0003_user_errors_pagination_index.sql +5 -0
  29. package/out/storage/drizzle/postgresql/migrations/meta/0003_snapshot.json +646 -0
  30. package/out/storage/drizzle/postgresql/migrations/meta/_journal.json +7 -0
  31. package/out/storage/drizzle/sqlite/config.d.ts +3 -2
  32. package/out/storage/drizzle/sqlite/config.js +2 -1
  33. package/out/storage/drizzle/sqlite/migrations/0002_user_errors_indexes.sql +4 -0
  34. package/out/storage/drizzle/sqlite/migrations/meta/0002_snapshot.json +687 -0
  35. package/out/storage/drizzle/sqlite/migrations/meta/_journal.json +7 -0
  36. package/out/storage/types.d.ts +30 -0
  37. package/package.json +12 -11
@@ -18765,195 +18765,390 @@
18765
18765
  }
18766
18766
 
18767
18767
  /**
18768
- * @license lucide-react v0.526.0 - ISC
18768
+ * @license lucide-react v1.44.0 - ISC
18769
18769
  *
18770
18770
  * This source code is licensed under the ISC license.
18771
18771
  * See the LICENSE file in the root directory of this source tree.
18772
18772
  */
18773
18773
 
18774
- const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
18775
- const toCamelCase = (string) => string.replace(
18776
- /^([A-Z])|[\s-_]+(\w)/g,
18777
- (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
18778
- );
18774
+ const toKebabCase = (string) => string?.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
18775
+
18776
+ /**
18777
+ * @license lucide-react v1.44.0 - ISC
18778
+ *
18779
+ * This source code is licensed under the ISC license.
18780
+ * See the LICENSE file in the root directory of this source tree.
18781
+ */
18782
+
18783
+
18784
+ function toLucideIconData(iconName, iconNode, aliases = []) {
18785
+ if (iconNode == null) {
18786
+ throw new Error("[lucide]: iconNode is required when icon name is used");
18787
+ }
18788
+ return {
18789
+ name: toKebabCase(iconName),
18790
+ size: 24,
18791
+ node: iconNode,
18792
+ ...aliases.length > 0 ? { aliases } : {}
18793
+ };
18794
+ }
18795
+
18796
+ /**
18797
+ * @license lucide-react v1.44.0 - ISC
18798
+ *
18799
+ * This source code is licensed under the ISC license.
18800
+ * See the LICENSE file in the root directory of this source tree.
18801
+ */
18802
+
18803
+ const toCamelCase = (string) => {
18804
+ let out = "";
18805
+ let upperNext = false;
18806
+ for (const ch of string) {
18807
+ if (ch === "-" || ch === "_" || ch <= " ") {
18808
+ upperNext = out.length > 0;
18809
+ continue;
18810
+ }
18811
+ if (out.length === 0) {
18812
+ out += ch.toLowerCase();
18813
+ } else {
18814
+ out += upperNext ? ch.toUpperCase() : ch;
18815
+ }
18816
+ upperNext = false;
18817
+ }
18818
+ return out;
18819
+ };
18820
+
18821
+ /**
18822
+ * @license lucide-react v1.44.0 - ISC
18823
+ *
18824
+ * This source code is licensed under the ISC license.
18825
+ * See the LICENSE file in the root directory of this source tree.
18826
+ */
18827
+
18828
+
18779
18829
  const toPascalCase = (string) => {
18780
18830
  const camelCase = toCamelCase(string);
18781
18831
  return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
18782
18832
  };
18833
+
18834
+ /**
18835
+ * @license lucide-react v1.44.0 - ISC
18836
+ *
18837
+ * This source code is licensed under the ISC license.
18838
+ * See the LICENSE file in the root directory of this source tree.
18839
+ */
18840
+
18783
18841
  const mergeClasses = (...classes) => classes.filter((className, index, array) => {
18784
18842
  return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
18785
18843
  }).join(" ").trim();
18786
- const hasA11yProp = (props) => {
18787
- for (const prop in props) {
18788
- if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
18789
- return true;
18790
- }
18791
- }
18792
- };
18793
18844
 
18794
18845
  /**
18795
- * @license lucide-react v0.526.0 - ISC
18846
+ * @license lucide-react v1.44.0 - ISC
18796
18847
  *
18797
18848
  * This source code is licensed under the ISC license.
18798
18849
  * See the LICENSE file in the root directory of this source tree.
18799
18850
  */
18800
18851
 
18801
- var defaultAttributes = {
18852
+ const defaultAttributes = {
18802
18853
  xmlns: "http://www.w3.org/2000/svg",
18803
18854
  width: 24,
18804
18855
  height: 24,
18805
18856
  viewBox: "0 0 24 24",
18806
18857
  fill: "none",
18807
18858
  stroke: "currentColor",
18808
- strokeWidth: 2,
18809
- strokeLinecap: "round",
18810
- strokeLinejoin: "round"
18859
+ "stroke-width": 2,
18860
+ "stroke-linecap": "round",
18861
+ "stroke-linejoin": "round"
18811
18862
  };
18812
18863
 
18813
18864
  /**
18814
- * @license lucide-react v0.526.0 - ISC
18865
+ * @license lucide-react v1.44.0 - ISC
18866
+ *
18867
+ * This source code is licensed under the ISC license.
18868
+ * See the LICENSE file in the root directory of this source tree.
18869
+ */
18870
+
18871
+
18872
+ function isDefined(value) {
18873
+ return value !== null && value !== void 0;
18874
+ }
18875
+ function buildLucideIconNode(icon, params = {}) {
18876
+ const attributeNames = params.attributeNames ?? {};
18877
+ const getAttributeName = (attributeName) => attributeNames[attributeName] ?? attributeName;
18878
+ const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes["width"];
18879
+ const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes["height"];
18880
+ const aliasClassNames = icon.aliases?.filter((alias) => typeof alias === "string" && alias.trim() !== "").map((alias) => `lucide-${alias}`) ?? [];
18881
+ const iconClassNames = [...icon.name ? [`lucide-${icon.name}`] : [], ...aliasClassNames];
18882
+ const classNamesFromClassName = params.className?.split(" ").filter(Boolean) ?? [];
18883
+ const className = params.includeDefaultClasses === false ? mergeClasses(...classNamesFromClassName) : mergeClasses("lucide", ...iconClassNames, ...classNamesFromClassName);
18884
+ const calculatedStrokeWidth = params.absoluteStrokeWidth ? Number(params.strokeWidth ?? defaultAttributes["stroke-width"]) * Number(icon.size ?? icon.width ?? defaultAttributes["width"]) / Number(params.size ?? params.width ?? defaultAttributes["width"]) : params.strokeWidth ?? defaultAttributes["stroke-width"];
18885
+ const attributes = {
18886
+ ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {
18887
+ attrs[getAttributeName(attrName)] = value;
18888
+ return attrs;
18889
+ }, {}),
18890
+ ..."color" in params && params.color && {
18891
+ [getAttributeName("stroke")]: params.color
18892
+ },
18893
+ ..."size" in params && isDefined(params.size) && {
18894
+ [getAttributeName("width")]: params.size,
18895
+ [getAttributeName("height")]: params.size
18896
+ },
18897
+ ..."width" in params && isDefined(params.width) && {
18898
+ [getAttributeName("width")]: params.width
18899
+ },
18900
+ ..."height" in params && isDefined(params.height) && {
18901
+ [getAttributeName("height")]: params.height
18902
+ },
18903
+ [getAttributeName("stroke-width")]: calculatedStrokeWidth,
18904
+ ...className && {
18905
+ [getAttributeName("class")]: className
18906
+ },
18907
+ [getAttributeName("viewBox")]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,
18908
+ ...params.hasA11yProp === false ? {
18909
+ [getAttributeName("aria-hidden")]: "true"
18910
+ } : {},
18911
+ ..."attributes" in params && params.attributes
18912
+ };
18913
+ return [
18914
+ "svg",
18915
+ attributes,
18916
+ icon.node.map((child) => {
18917
+ const [name, attrs, children] = child;
18918
+ const nextAttrs = params.nonScalingStroke ? { [getAttributeName("vector-effect")]: "non-scaling-stroke", ...attrs } : attrs;
18919
+ return children ? [name, nextAttrs, children] : [name, nextAttrs];
18920
+ })
18921
+ ];
18922
+ }
18923
+
18924
+ /**
18925
+ * @license lucide-react v1.44.0 - ISC
18815
18926
  *
18816
18927
  * This source code is licensed under the ISC license.
18817
18928
  * See the LICENSE file in the root directory of this source tree.
18818
18929
  */
18819
18930
 
18820
18931
 
18932
+ function buildLucideIconForReact(icon, params = {}) {
18933
+ return buildLucideIconNode(icon, {
18934
+ ...params,
18935
+ attributeNames: {
18936
+ ...params.attributeNames,
18937
+ class: "className",
18938
+ "stroke-width": "strokeWidth",
18939
+ "stroke-linecap": "strokeLinecap",
18940
+ "stroke-linejoin": "strokeLinejoin",
18941
+ "vector-effect": "vectorEffect"
18942
+ }
18943
+ });
18944
+ }
18945
+
18946
+ /**
18947
+ * @license lucide-react v1.44.0 - ISC
18948
+ *
18949
+ * This source code is licensed under the ISC license.
18950
+ * See the LICENSE file in the root directory of this source tree.
18951
+ */
18952
+
18953
+ const hasA11yProp = (props) => {
18954
+ for (const prop in props) {
18955
+ if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
18956
+ return true;
18957
+ }
18958
+ }
18959
+ return false;
18960
+ };
18961
+
18962
+ const LucideContext = reactExports.createContext({});
18963
+ const useLucideContext = () => reactExports.useContext(LucideContext);
18964
+
18821
18965
  const Icon = reactExports.forwardRef(
18822
18966
  ({
18823
- color = "currentColor",
18824
- size = 24,
18825
- strokeWidth = 2,
18967
+ color,
18968
+ size,
18969
+ width,
18970
+ height,
18971
+ strokeWidth,
18826
18972
  absoluteStrokeWidth,
18973
+ nonScalingStroke,
18827
18974
  className = "",
18828
18975
  children,
18829
- iconNode,
18830
- ...rest
18831
- }, ref) => reactExports.createElement(
18832
- "svg",
18833
- {
18834
- ref,
18835
- ...defaultAttributes,
18836
- width: size,
18837
- height: size,
18838
- stroke: color,
18839
- strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
18840
- className: mergeClasses("lucide", className),
18841
- ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
18842
- ...rest
18976
+ iconNode = [],
18977
+ icon = {
18978
+ node: iconNode,
18979
+ aliases: [],
18980
+ size: 24
18843
18981
  },
18844
- [
18845
- ...iconNode.map(([tag, attrs]) => reactExports.createElement(tag, attrs)),
18846
- ...Array.isArray(children) ? children : [children]
18847
- ]
18848
- )
18982
+ ...rest
18983
+ }, ref) => {
18984
+ const {
18985
+ size: contextSize = 24,
18986
+ strokeWidth: contextStrokeWidth = 2,
18987
+ absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,
18988
+ nonScalingStroke: contextNonScalingStroke = false,
18989
+ color: contextColor = "currentColor",
18990
+ className: contextClass = ""
18991
+ } = useLucideContext() ?? {};
18992
+ const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);
18993
+ const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {
18994
+ color: color ?? contextColor,
18995
+ width: width ?? size ?? contextSize,
18996
+ height: height ?? size ?? contextSize,
18997
+ strokeWidth: strokeWidth ?? contextStrokeWidth,
18998
+ absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,
18999
+ nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,
19000
+ className: mergeClasses(contextClass, className),
19001
+ hasA11yProp: hasAccessibleProp,
19002
+ attributes: rest
19003
+ });
19004
+ return reactExports.createElement(
19005
+ name,
19006
+ {
19007
+ ref,
19008
+ ...svgAttributes
19009
+ },
19010
+ [
19011
+ ...builtIconNode.map(([tag, attrs]) => reactExports.createElement(tag, attrs)),
19012
+ ...Array.isArray(children) ? children : [children]
19013
+ ]
19014
+ );
19015
+ }
18849
19016
  );
18850
19017
 
18851
19018
  /**
18852
- * @license lucide-react v0.526.0 - ISC
19019
+ * @license lucide-react v1.44.0 - ISC
18853
19020
  *
18854
19021
  * This source code is licensed under the ISC license.
18855
19022
  * See the LICENSE file in the root directory of this source tree.
18856
19023
  */
18857
19024
 
18858
19025
 
18859
- const createLucideIcon = (iconName, iconNode) => {
19026
+ function createLucideIcon(iconDataOrName, iconNode = [], aliases = []) {
19027
+ const iconData = typeof iconDataOrName === "string" ? toLucideIconData(iconDataOrName, iconNode, aliases) : iconDataOrName;
18860
19028
  const Component = reactExports.forwardRef(
18861
19029
  ({ className, ...props }, ref) => reactExports.createElement(Icon, {
18862
19030
  ref,
18863
- iconNode,
18864
- className: mergeClasses(
18865
- `lucide-${toKebabCase(toPascalCase(iconName))}`,
18866
- `lucide-${iconName}`,
18867
- className
18868
- ),
19031
+ icon: iconData,
19032
+ className,
18869
19033
  ...props
18870
19034
  })
18871
19035
  );
18872
- Component.displayName = toPascalCase(iconName);
19036
+ if (iconData.name) {
19037
+ Component.displayName = toPascalCase(iconData.name);
19038
+ }
18873
19039
  return Component;
18874
- };
19040
+ }
18875
19041
 
18876
19042
  /**
18877
- * @license lucide-react v0.526.0 - ISC
19043
+ * @license lucide-react v1.44.0 - ISC
18878
19044
  *
18879
19045
  * This source code is licensed under the ISC license.
18880
19046
  * See the LICENSE file in the root directory of this source tree.
18881
19047
  */
18882
19048
 
18883
19049
 
18884
- const __iconNode$4 = [
18885
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
18886
- ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
18887
- ];
18888
- const CircleCheck = createLucideIcon("circle-check", __iconNode$4);
19050
+ const __iconData$4 = {
19051
+ name: "circle-check",
19052
+ size: 24,
19053
+ node: [
19054
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
19055
+ ["path", { d: "m16 9-5.5 5.5L8 12", key: "xofnsj" }]
19056
+ ],
19057
+ aliases: ["check-circle-2"]
19058
+ };
19059
+ __iconData$4.node;
19060
+ const CircleCheck = createLucideIcon(__iconData$4);
18889
19061
 
18890
19062
  /**
18891
- * @license lucide-react v0.526.0 - ISC
19063
+ * @license lucide-react v1.44.0 - ISC
18892
19064
  *
18893
19065
  * This source code is licensed under the ISC license.
18894
19066
  * See the LICENSE file in the root directory of this source tree.
18895
19067
  */
18896
19068
 
18897
19069
 
18898
- const __iconNode$3 = [
18899
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
18900
- ["path", { d: "M12 16v-4", key: "1dtifu" }],
18901
- ["path", { d: "M12 8h.01", key: "e9boi3" }]
18902
- ];
18903
- const Info = createLucideIcon("info", __iconNode$3);
19070
+ const __iconData$3 = {
19071
+ name: "info",
19072
+ size: 24,
19073
+ node: [
19074
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
19075
+ ["path", { d: "M12 16v-4", key: "1dtifu" }],
19076
+ ["path", { d: "M12 8h.01", key: "e9boi3" }]
19077
+ ]
19078
+ };
19079
+ __iconData$3.node;
19080
+ const Info = createLucideIcon(__iconData$3);
18904
19081
 
18905
19082
  /**
18906
- * @license lucide-react v0.526.0 - ISC
19083
+ * @license lucide-react v1.44.0 - ISC
18907
19084
  *
18908
19085
  * This source code is licensed under the ISC license.
18909
19086
  * See the LICENSE file in the root directory of this source tree.
18910
19087
  */
18911
19088
 
18912
19089
 
18913
- const __iconNode$2 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
18914
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$2);
19090
+ const __iconData$2 = {
19091
+ name: "loader-circle",
19092
+ size: 24,
19093
+ node: [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]],
19094
+ aliases: ["loader-2"]
19095
+ };
19096
+ __iconData$2.node;
19097
+ const LoaderCircle = createLucideIcon(__iconData$2);
18915
19098
 
18916
19099
  /**
18917
- * @license lucide-react v0.526.0 - ISC
19100
+ * @license lucide-react v1.44.0 - ISC
18918
19101
  *
18919
19102
  * This source code is licensed under the ISC license.
18920
19103
  * See the LICENSE file in the root directory of this source tree.
18921
19104
  */
18922
19105
 
18923
19106
 
18924
- const __iconNode$1 = [
18925
- ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
18926
- [
18927
- "path",
18928
- {
18929
- d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",
18930
- key: "2d38gg"
18931
- }
19107
+ const __iconData$1 = {
19108
+ name: "octagon-x",
19109
+ size: 24,
19110
+ node: [
19111
+ ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
19112
+ [
19113
+ "path",
19114
+ {
19115
+ d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",
19116
+ key: "2d38gg"
19117
+ }
19118
+ ],
19119
+ ["path", { d: "m9 9 6 6", key: "z0biqf" }]
18932
19120
  ],
18933
- ["path", { d: "m9 9 6 6", key: "z0biqf" }]
18934
- ];
18935
- const OctagonX = createLucideIcon("octagon-x", __iconNode$1);
19121
+ aliases: ["x-octagon"]
19122
+ };
19123
+ __iconData$1.node;
19124
+ const OctagonX = createLucideIcon(__iconData$1);
18936
19125
 
18937
19126
  /**
18938
- * @license lucide-react v0.526.0 - ISC
19127
+ * @license lucide-react v1.44.0 - ISC
18939
19128
  *
18940
19129
  * This source code is licensed under the ISC license.
18941
19130
  * See the LICENSE file in the root directory of this source tree.
18942
19131
  */
18943
19132
 
18944
19133
 
18945
- const __iconNode = [
18946
- [
18947
- "path",
18948
- {
18949
- d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
18950
- key: "wmoenq"
18951
- }
19134
+ const __iconData = {
19135
+ name: "triangle-alert",
19136
+ size: 24,
19137
+ node: [
19138
+ [
19139
+ "path",
19140
+ {
19141
+ d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
19142
+ key: "wmoenq"
19143
+ }
19144
+ ],
19145
+ ["path", { d: "M12 9v4", key: "juzpu7" }],
19146
+ ["path", { d: "M12 17h.01", key: "p32p05" }]
18952
19147
  ],
18953
- ["path", { d: "M12 9v4", key: "juzpu7" }],
18954
- ["path", { d: "M12 17h.01", key: "p32p05" }]
18955
- ];
18956
- const TriangleAlert = createLucideIcon("triangle-alert", __iconNode);
19148
+ aliases: ["alert-triangle"]
19149
+ };
19150
+ __iconData.node;
19151
+ const TriangleAlert = createLucideIcon(__iconData);
18957
19152
 
18958
19153
  function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
18959
19154