@intlify/bundle-utils 5.2.0 → 5.3.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.
package/lib/codegen.d.ts CHANGED
@@ -24,6 +24,7 @@ export interface SourceLocationable {
24
24
  */
25
25
  export interface CodeGenOptions {
26
26
  type?: 'plain' | 'sfc' | 'bare';
27
+ legacy?: boolean;
27
28
  bridge?: boolean;
28
29
  exportESM?: boolean;
29
30
  source?: string;
package/lib/json.d.ts CHANGED
@@ -7,4 +7,4 @@ import type { CodeGenOptions, CodeGenResult } from './codegen';
7
7
  /**
8
8
  * @internal
9
9
  */
10
- export declare function generate(targetSource: string | Buffer, { type, bridge, exportESM, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, useClassComponent }: CodeGenOptions, injector?: () => string): CodeGenResult<JSONProgram>;
10
+ export declare function generate(targetSource: string | Buffer, { type, legacy, bridge, exportESM, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError, useClassComponent }: CodeGenOptions, injector?: () => string): CodeGenResult<JSONProgram>;
package/lib/json.js CHANGED
@@ -2,15 +2,20 @@
2
2
  /**
3
3
  * Code generator for i18n json/json5 resource
4
4
  */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
5
8
  Object.defineProperty(exports, "__esModule", { value: true });
6
9
  exports.generate = void 0;
7
10
  const jsonc_eslint_parser_1 = require("jsonc-eslint-parser");
8
11
  const shared_1 = require("@intlify/shared");
9
12
  const codegen_1 = require("./codegen");
13
+ const legacy_1 = require("./legacy");
14
+ const magic_string_1 = __importDefault(require("magic-string"));
10
15
  /**
11
16
  * @internal
12
17
  */
13
- function generate(targetSource, { type = 'plain', bridge = false, exportESM = false, filename = 'vue-i18n-loader.json', inSourceMap = undefined, locale = '', isGlobal = false, sourceMap = false, env = 'development', forceStringify = false, onError = undefined, useClassComponent = false }, injector) {
18
+ function generate(targetSource, { type = 'plain', legacy = false, bridge = false, exportESM = false, filename = 'vue-i18n-loader.json', inSourceMap = undefined, locale = '', isGlobal = false, sourceMap = false, env = 'development', forceStringify = false, onError = undefined, useClassComponent = false }, injector) {
14
19
  const target = Buffer.isBuffer(targetSource)
15
20
  ? targetSource.toString()
16
21
  : targetSource;
@@ -35,6 +40,21 @@ function generate(targetSource, { type = 'plain', bridge = false, exportESM = fa
35
40
  };
36
41
  const generator = (0, codegen_1.createCodeGenerator)(options);
37
42
  const ast = (0, jsonc_eslint_parser_1.parseJSON)(value, { filePath: filename });
43
+ // for vue 2.x
44
+ if (legacy && type === 'sfc') {
45
+ const gen = () => (0, shared_1.friendlyJSONstringify)((0, jsonc_eslint_parser_1.getStaticJSONValue)(ast));
46
+ const code = (0, legacy_1.generateLegacyCode)(options, gen);
47
+ const s = new magic_string_1.default(code);
48
+ return {
49
+ ast,
50
+ code: s.toString(),
51
+ map: s.generateMap({
52
+ file: filename,
53
+ source: value,
54
+ includeContent: true
55
+ })
56
+ };
57
+ }
38
58
  const codeMaps = generateNode(generator, ast, options, injector);
39
59
  const { code, map } = generator.context();
40
60
  // if (map) {
@@ -0,0 +1,2 @@
1
+ import type { CodeGenOptions } from './codegen';
2
+ export declare function generateLegacyCode({ isGlobal }: CodeGenOptions, generator: () => string): string;
package/lib/legacy.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateLegacyCode = void 0;
4
+ const shared_1 = require("@intlify/shared");
5
+ function generateLegacyCode({ isGlobal }, generator) {
6
+ // prettier-ignore
7
+ const componentNamespace = `Component.options`;
8
+ const variableName = !isGlobal ? '__i18n' : '__i18nGlobal';
9
+ const exportSyntax = 'export default';
10
+ const code = `${exportSyntax} function (Component) {
11
+ ${componentNamespace}.${variableName} = ${componentNamespace}.${variableName} || []
12
+ ${componentNamespace}.${variableName}.push(${(0, shared_1.friendlyJSONstringify)(generator())})
13
+ delete ${componentNamespace}._Ctor
14
+ }`;
15
+ return code;
16
+ }
17
+ exports.generateLegacyCode = generateLegacyCode;
package/lib/yaml.d.ts CHANGED
@@ -7,4 +7,4 @@ import type { CodeGenOptions, CodeGenResult } from './codegen';
7
7
  /**
8
8
  * @internal
9
9
  */
10
- export declare function generate(targetSource: string | Buffer, { type, bridge, exportESM, useClassComponent, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError }: CodeGenOptions, injector?: () => string): CodeGenResult<YAMLProgram>;
10
+ export declare function generate(targetSource: string | Buffer, { type, legacy, bridge, exportESM, useClassComponent, filename, inSourceMap, locale, isGlobal, sourceMap, env, forceStringify, onError }: CodeGenOptions, injector?: () => string): CodeGenResult<YAMLProgram>;
package/lib/yaml.js CHANGED
@@ -2,15 +2,20 @@
2
2
  /**
3
3
  * Code generator for i18n yaml resource
4
4
  */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
5
8
  Object.defineProperty(exports, "__esModule", { value: true });
6
9
  exports.generate = void 0;
7
10
  const shared_1 = require("@intlify/shared");
8
11
  const codegen_1 = require("./codegen");
9
12
  const yaml_eslint_parser_1 = require("yaml-eslint-parser");
13
+ const legacy_1 = require("./legacy");
14
+ const magic_string_1 = __importDefault(require("magic-string"));
10
15
  /**
11
16
  * @internal
12
17
  */
13
- function generate(targetSource, { type = 'plain', bridge = false, exportESM = false, useClassComponent = false, filename = 'vue-i18n-loader.yaml', inSourceMap = undefined, locale = '', isGlobal = false, sourceMap = false, env = 'development', forceStringify = false, onError = undefined }, injector) {
18
+ function generate(targetSource, { type = 'plain', legacy = false, bridge = false, exportESM = false, useClassComponent = false, filename = 'vue-i18n-loader.yaml', inSourceMap = undefined, locale = '', isGlobal = false, sourceMap = false, env = 'development', forceStringify = false, onError = undefined }, injector) {
14
19
  const value = Buffer.isBuffer(targetSource)
15
20
  ? targetSource.toString()
16
21
  : targetSource;
@@ -31,6 +36,21 @@ function generate(targetSource, { type = 'plain', bridge = false, exportESM = fa
31
36
  };
32
37
  const generator = (0, codegen_1.createCodeGenerator)(options);
33
38
  const ast = (0, yaml_eslint_parser_1.parseYAML)(value, { filePath: filename });
39
+ // for vue 2.x
40
+ if (legacy && type === 'sfc') {
41
+ const gen = () => (0, shared_1.friendlyJSONstringify)((0, yaml_eslint_parser_1.getStaticYAMLValue)(ast));
42
+ const code = (0, legacy_1.generateLegacyCode)(options, gen);
43
+ const s = new magic_string_1.default(code);
44
+ return {
45
+ ast,
46
+ code: s.toString(),
47
+ map: s.generateMap({
48
+ file: filename,
49
+ source: value,
50
+ includeContent: true
51
+ })
52
+ };
53
+ }
34
54
  const codeMaps = generateNode(generator, ast, options, injector);
35
55
  const { code, map } = generator.context();
36
56
  // prettier-ignore
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@intlify/bundle-utils",
3
3
  "description": "Bundle utilities for Intlify project",
4
- "version": "5.2.0",
4
+ "version": "5.3.0",
5
5
  "author": {
6
6
  "name": "kazuya kawaguchi",
7
7
  "email": "kawakazu80@gmail.com"
@@ -23,6 +23,7 @@
23
23
  "acorn": "^8.8.2",
24
24
  "estree-walker": "^2.0.2",
25
25
  "jsonc-eslint-parser": "^1.0.1",
26
+ "magic-string": "^0.30.0",
26
27
  "source-map": "0.6.1",
27
28
  "yaml-eslint-parser": "^0.3.2"
28
29
  },