@vocab/webpack 1.2.12 → 1.2.13-fix-messageformat-import-20250923014407

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 (63) hide show
  1. package/dist/chunk-nOFOJqeH.js +30 -0
  2. package/dist/chunk-name-CBgqhApm.js +14 -0
  3. package/dist/chunk-name-CBgqhApm.js.map +1 -0
  4. package/dist/chunk-name-D6UZ3rB7.mjs +8 -0
  5. package/dist/chunk-name-D6UZ3rB7.mjs.map +1 -0
  6. package/dist/chunk-name.d.mts +5 -0
  7. package/dist/chunk-name.d.ts +5 -0
  8. package/dist/chunk-name.js +3 -0
  9. package/dist/chunk-name.mjs +3 -0
  10. package/dist/index.d.mts +19 -0
  11. package/dist/index.d.ts +19 -0
  12. package/dist/index.js +33 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/index.mjs +30 -0
  15. package/dist/index.mjs.map +1 -0
  16. package/dist/loader.d.mts +9 -0
  17. package/dist/loader.d.ts +8 -0
  18. package/dist/loader.js +99 -0
  19. package/dist/loader.js.map +1 -0
  20. package/dist/loader.mjs +94 -0
  21. package/dist/loader.mjs.map +1 -0
  22. package/dist/logger-CoUhqRrx.mjs +14 -0
  23. package/dist/logger-CoUhqRrx.mjs.map +1 -0
  24. package/dist/logger-vmXVx1Ky.js +16 -0
  25. package/dist/logger-vmXVx1Ky.js.map +1 -0
  26. package/dist/web.d.mts +8 -0
  27. package/dist/web.d.ts +8 -0
  28. package/dist/web.js +31 -0
  29. package/dist/web.js.map +1 -0
  30. package/dist/web.mjs +22 -0
  31. package/dist/web.mjs.map +1 -0
  32. package/package.json +17 -27
  33. package/README.md +0 -827
  34. package/chunk-name/dist/vocab-webpack-chunk-name.cjs.d.ts +0 -2
  35. package/chunk-name/dist/vocab-webpack-chunk-name.cjs.dev.js +0 -9
  36. package/chunk-name/dist/vocab-webpack-chunk-name.cjs.js +0 -7
  37. package/chunk-name/dist/vocab-webpack-chunk-name.cjs.prod.js +0 -9
  38. package/chunk-name/dist/vocab-webpack-chunk-name.esm.js +0 -5
  39. package/chunk-name/package.json +0 -4
  40. package/dist/declarations/src/chunk-name.d.ts +0 -1
  41. package/dist/declarations/src/index.d.ts +0 -12
  42. package/dist/declarations/src/loader.d.ts +0 -5
  43. package/dist/declarations/src/web.d.ts +0 -3
  44. package/dist/logger-018d2c78.cjs.prod.js +0 -12
  45. package/dist/logger-c5869e3f.esm.js +0 -6
  46. package/dist/logger-ebb09632.cjs.dev.js +0 -12
  47. package/dist/vocab-webpack.cjs.d.ts +0 -2
  48. package/dist/vocab-webpack.cjs.dev.js +0 -43
  49. package/dist/vocab-webpack.cjs.js +0 -7
  50. package/dist/vocab-webpack.cjs.prod.js +0 -43
  51. package/dist/vocab-webpack.esm.js +0 -38
  52. package/loader/dist/vocab-webpack-loader.cjs.d.ts +0 -3
  53. package/loader/dist/vocab-webpack-loader.cjs.dev.js +0 -137
  54. package/loader/dist/vocab-webpack-loader.cjs.js +0 -7
  55. package/loader/dist/vocab-webpack-loader.cjs.prod.js +0 -137
  56. package/loader/dist/vocab-webpack-loader.esm.js +0 -109
  57. package/loader/package.json +0 -4
  58. package/web/dist/vocab-webpack-web.cjs.d.ts +0 -2
  59. package/web/dist/vocab-webpack-web.cjs.dev.js +0 -34
  60. package/web/dist/vocab-webpack-web.cjs.js +0 -7
  61. package/web/dist/vocab-webpack-web.cjs.prod.js +0 -34
  62. package/web/dist/vocab-webpack-web.esm.js +0 -26
  63. package/web/package.json +0 -4
@@ -1,2 +0,0 @@
1
- export * from "../../dist/declarations/src/chunk-name.js";
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9jYWItd2VicGFjay1jaHVuay1uYW1lLmNqcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vZGlzdC9kZWNsYXJhdGlvbnMvc3JjL2NodW5rLW5hbWUuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- function getChunkName(lang) {
6
- return `${lang}-translations`;
7
- }
8
-
9
- exports.getChunkName = getChunkName;
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- if (process.env.NODE_ENV === "production") {
4
- module.exports = require("./vocab-webpack-chunk-name.cjs.prod.js");
5
- } else {
6
- module.exports = require("./vocab-webpack-chunk-name.cjs.dev.js");
7
- }
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- function getChunkName(lang) {
6
- return `${lang}-translations`;
7
- }
8
-
9
- exports.getChunkName = getChunkName;
@@ -1,5 +0,0 @@
1
- function getChunkName(lang) {
2
- return `${lang}-translations`;
3
- }
4
-
5
- export { getChunkName };
@@ -1,4 +0,0 @@
1
- {
2
- "main": "dist/vocab-webpack-chunk-name.cjs.js",
3
- "module": "dist/vocab-webpack-chunk-name.esm.js"
4
- }
@@ -1 +0,0 @@
1
- export declare function getChunkName(lang: string): string;
@@ -1,12 +0,0 @@
1
- import { type UserConfig } from '@vocab/core';
2
- import type { Compiler } from 'webpack';
3
- interface UserOptions extends Partial<UserConfig> {
4
- configFile?: string;
5
- }
6
- export declare const compiledVocabFileFilter: RegExp;
7
- export declare class VocabWebpackPlugin {
8
- options: UserConfig;
9
- constructor({ configFile, ...rest }?: UserOptions);
10
- apply(compiler: Compiler): void;
11
- }
12
- export {};
@@ -1,5 +0,0 @@
1
- import { type UserConfig } from '@vocab/core';
2
- import type { LoaderContext as WebpackLoaderContext } from 'webpack';
3
- type LoaderContext = WebpackLoaderContext<UserConfig>;
4
- export default function vocabLoader(this: LoaderContext, source: string): Promise<void>;
5
- export {};
@@ -1,3 +0,0 @@
1
- import type { TranslationModule } from '@vocab/core';
2
- export { createTranslationFile } from '@vocab/core/translation-file';
3
- export declare const createLanguage: (moduleId: string, loadImport: () => Promise<any>) => TranslationModule<any>;
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- require('picocolors');
4
- var debug = require('debug');
5
-
6
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
7
-
8
- var debug__default = /*#__PURE__*/_interopDefault(debug);
9
-
10
- const trace = debug__default["default"](`vocab:webpack`);
11
-
12
- exports.trace = trace;
@@ -1,6 +0,0 @@
1
- import 'picocolors';
2
- import debug from 'debug';
3
-
4
- const trace = debug(`vocab:webpack`);
5
-
6
- export { trace as t };
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- require('picocolors');
4
- var debug = require('debug');
5
-
6
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
7
-
8
- var debug__default = /*#__PURE__*/_interopDefault(debug);
9
-
10
- const trace = debug__default["default"](`vocab:webpack`);
11
-
12
- exports.trace = trace;
@@ -1,2 +0,0 @@
1
- export * from "./declarations/src/index.js";
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9jYWItd2VicGFjay5janMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4vZGVjbGFyYXRpb25zL3NyYy9pbmRleC5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIn0=
@@ -1,43 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var core = require('@vocab/core');
6
- var logger = require('./logger-ebb09632.cjs.dev.js');
7
- require('picocolors');
8
- require('debug');
9
-
10
- const compiledVocabFileFilter = /\.vocab[\\/]index\.(?:ts|js|cjs|mjs)$/;
11
- class VocabWebpackPlugin {
12
- constructor({
13
- configFile,
14
- ...rest
15
- } = {}) {
16
- logger.trace(`Creating Vocab plugin${configFile ? ` with config file ${configFile}` : ''}`);
17
- this.options = {
18
- ...core.resolveConfigSync(configFile),
19
- ...rest
20
- };
21
- core.validateConfig(this.options);
22
- }
23
- apply(compiler) {
24
- logger.trace(`Applying plugin: ${compiler.options.name} (${compiler.options.target})`);
25
- if (!compiler.options.module) {
26
- // @ts-expect-error Support for older versions of webpack that may not have module defined at this stage
27
- compiler.options.module = {
28
- rules: []
29
- };
30
- }
31
- if (!compiler.options.module.rules) {
32
- compiler.options.module.rules = [];
33
- }
34
- compiler.options.module.rules.splice(0, 0, {
35
- test: compiledVocabFileFilter,
36
- loader: require.resolve('@vocab/webpack/loader'),
37
- options: this.options
38
- });
39
- }
40
- }
41
-
42
- exports.VocabWebpackPlugin = VocabWebpackPlugin;
43
- exports.compiledVocabFileFilter = compiledVocabFileFilter;
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- if (process.env.NODE_ENV === "production") {
4
- module.exports = require("./vocab-webpack.cjs.prod.js");
5
- } else {
6
- module.exports = require("./vocab-webpack.cjs.dev.js");
7
- }
@@ -1,43 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var core = require('@vocab/core');
6
- var logger = require('./logger-018d2c78.cjs.prod.js');
7
- require('picocolors');
8
- require('debug');
9
-
10
- const compiledVocabFileFilter = /\.vocab[\\/]index\.(?:ts|js|cjs|mjs)$/;
11
- class VocabWebpackPlugin {
12
- constructor({
13
- configFile,
14
- ...rest
15
- } = {}) {
16
- logger.trace(`Creating Vocab plugin${configFile ? ` with config file ${configFile}` : ''}`);
17
- this.options = {
18
- ...core.resolveConfigSync(configFile),
19
- ...rest
20
- };
21
- core.validateConfig(this.options);
22
- }
23
- apply(compiler) {
24
- logger.trace(`Applying plugin: ${compiler.options.name} (${compiler.options.target})`);
25
- if (!compiler.options.module) {
26
- // @ts-expect-error Support for older versions of webpack that may not have module defined at this stage
27
- compiler.options.module = {
28
- rules: []
29
- };
30
- }
31
- if (!compiler.options.module.rules) {
32
- compiler.options.module.rules = [];
33
- }
34
- compiler.options.module.rules.splice(0, 0, {
35
- test: compiledVocabFileFilter,
36
- loader: require.resolve('@vocab/webpack/loader'),
37
- options: this.options
38
- });
39
- }
40
- }
41
-
42
- exports.VocabWebpackPlugin = VocabWebpackPlugin;
43
- exports.compiledVocabFileFilter = compiledVocabFileFilter;
@@ -1,38 +0,0 @@
1
- import { resolveConfigSync, validateConfig } from '@vocab/core';
2
- import { t as trace } from './logger-c5869e3f.esm.js';
3
- import 'picocolors';
4
- import 'debug';
5
-
6
- const compiledVocabFileFilter = /\.vocab[\\/]index\.(?:ts|js|cjs|mjs)$/;
7
- class VocabWebpackPlugin {
8
- constructor({
9
- configFile,
10
- ...rest
11
- } = {}) {
12
- trace(`Creating Vocab plugin${configFile ? ` with config file ${configFile}` : ''}`);
13
- this.options = {
14
- ...resolveConfigSync(configFile),
15
- ...rest
16
- };
17
- validateConfig(this.options);
18
- }
19
- apply(compiler) {
20
- trace(`Applying plugin: ${compiler.options.name} (${compiler.options.target})`);
21
- if (!compiler.options.module) {
22
- // @ts-expect-error Support for older versions of webpack that may not have module defined at this stage
23
- compiler.options.module = {
24
- rules: []
25
- };
26
- }
27
- if (!compiler.options.module.rules) {
28
- compiler.options.module.rules = [];
29
- }
30
- compiler.options.module.rules.splice(0, 0, {
31
- test: compiledVocabFileFilter,
32
- loader: require.resolve('@vocab/webpack/loader'),
33
- options: this.options
34
- });
35
- }
36
- }
37
-
38
- export { VocabWebpackPlugin, compiledVocabFileFilter };
@@ -1,3 +0,0 @@
1
- export * from "../../dist/declarations/src/loader.js";
2
- export { default } from "../../dist/declarations/src/loader.js";
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9jYWItd2VicGFjay1sb2FkZXIuY2pzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9kaXN0L2RlY2xhcmF0aW9ucy9zcmMvbG9hZGVyLmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEifQ==
@@ -1,137 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var path = require('path');
6
- var core = require('@vocab/core');
7
- var cjsModuleLexer = require('cjs-module-lexer');
8
- var esModuleLexer = require('es-module-lexer');
9
- var chunkName_dist_vocabWebpackChunkName = require('../../chunk-name/dist/vocab-webpack-chunk-name.cjs.dev.js');
10
- var logger = require('../../dist/logger-ebb09632.cjs.dev.js');
11
- require('picocolors');
12
- require('debug');
13
-
14
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
15
-
16
- function _interopNamespace(e) {
17
- if (e && e.__esModule) return e;
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
29
- }
30
- n["default"] = e;
31
- return Object.freeze(n);
32
- }
33
-
34
- var path__default = /*#__PURE__*/_interopDefault(path);
35
- var cjsModuleLexer__namespace = /*#__PURE__*/_interopNamespace(cjsModuleLexer);
36
- var esModuleLexer__namespace = /*#__PURE__*/_interopNamespace(esModuleLexer);
37
-
38
- const trace = logger.trace.extend('loader');
39
-
40
- // Resolve virtual-resource-loader dependency from current package
41
- const virtualResourceLoader = require.resolve('virtual-resource-loader');
42
- function createIdentifier(lang, resourcePath, loadedTranslation) {
43
- var _loadedTranslation$la;
44
- trace('Creating identifier for language', lang);
45
- const languageTranslations = (_loadedTranslation$la = loadedTranslation.languages[lang]) !== null && _loadedTranslation$la !== void 0 ? _loadedTranslation$la : {};
46
- const langJson = {};
47
- for (const key of loadedTranslation.keys) {
48
- langJson[key] = languageTranslations[key].message;
49
- }
50
- const base64 = Buffer.from(JSON.stringify(langJson), 'utf-8').toString('base64');
51
- const unloader = `${virtualResourceLoader}?source=${encodeURIComponent(base64)}`;
52
- const fileIdent = path__default["default"].basename(resourcePath, 'translations.json');
53
- return `./${fileIdent}-${lang}-virtual.json!=!${unloader}!`;
54
- }
55
-
56
- // reimplement `stringifyRequest` from loader-utils 2.x
57
- // https://github.com/webpack/loader-utils/blob/master/CHANGELOG.md#300-2021-10-20
58
- function stringifyRequest(request) {
59
- return JSON.stringify(this.utils.contextify(this.context, request));
60
- }
61
- function renderLanguageLoaderAsync(resourcePath, loadedTranslation) {
62
- return lang => {
63
- const identifier = stringifyRequest.call(this, createIdentifier(lang, resourcePath, loadedTranslation));
64
- return /* ts */`
65
- createLanguage(
66
- require.resolveWeak(${identifier}),
67
- () => import(
68
- /* webpackChunkName: ${JSON.stringify(chunkName_dist_vocabWebpackChunkName.getChunkName(lang))} */
69
- ${identifier}
70
- )
71
- )
72
- `.trim();
73
- };
74
- }
75
- function findExportNames(source, mode) {
76
- if (mode === 'esm') {
77
- const [, exports] = esModuleLexer__namespace.parse(source);
78
- return exports;
79
- }
80
- const {
81
- exports
82
- } = cjsModuleLexer__namespace.parse(source);
83
- return exports;
84
- }
85
- async function vocabLoader(source) {
86
- trace(`Using vocab loader for ${this.resourcePath}`);
87
- const callback = this.async();
88
- if (!callback) {
89
- throw new Error(`Webpack didn't provide an async callback`);
90
- }
91
- const config = this.getOptions();
92
- const devJsonFilePath = core.getDevLanguageFileFromTsFile(this.resourcePath);
93
- const loadedTranslation = core.loadTranslation({
94
- filePath: devJsonFilePath,
95
- fallbacks: 'all'
96
- }, config);
97
- const target = this.target;
98
- if (target && target !== 'web') {
99
- trace(`Why are you using the loader on ${target}?`);
100
- callback(new Error('Called Vocab Loader with non-web target'));
101
- return;
102
- }
103
- const renderLanguageLoader = renderLanguageLoaderAsync.call(this, devJsonFilePath, loadedTranslation);
104
- const translations = /* ts */`
105
- const translations = createTranslationFile({
106
- ${Object.keys(loadedTranslation.languages).map(lang => `${JSON.stringify(lang)}: ${renderLanguageLoader(lang)}`).join(',\n')}
107
- });
108
- `;
109
- let result;
110
-
111
- // this is necessary for the Web Assembly boot
112
- await esModuleLexer__namespace.init;
113
- const esmExports = findExportNames(source, 'esm');
114
- if (esmExports.length > 0) {
115
- const exportName = esmExports[0];
116
- trace(`Found ESM export '${exportName.n}' in ${this.resourcePath}`);
117
- result = /* ts */`
118
- import { createLanguage, createTranslationFile } from '@vocab/webpack/${target}';
119
- ${translations}
120
- export { translations as ${exportName.n} };
121
- `;
122
- } else {
123
- // init needs to be called and waited upon
124
- await cjsModuleLexer__namespace.init();
125
- const exportName = findExportNames(source, 'cjs')[0];
126
- trace(`Found CJS export '${exportName}' in ${this.resourcePath}`);
127
- result = /* ts */`
128
- const { createLanguage, createTranslationFile } = require('@vocab/webpack/${target}');
129
- ${translations}
130
- exports.${exportName} = translations;
131
- `;
132
- }
133
- trace('Created translation file', result);
134
- callback(null, result);
135
- }
136
-
137
- exports["default"] = vocabLoader;
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- if (process.env.NODE_ENV === "production") {
4
- module.exports = require("./vocab-webpack-loader.cjs.prod.js");
5
- } else {
6
- module.exports = require("./vocab-webpack-loader.cjs.dev.js");
7
- }
@@ -1,137 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var path = require('path');
6
- var core = require('@vocab/core');
7
- var cjsModuleLexer = require('cjs-module-lexer');
8
- var esModuleLexer = require('es-module-lexer');
9
- var chunkName_dist_vocabWebpackChunkName = require('../../chunk-name/dist/vocab-webpack-chunk-name.cjs.prod.js');
10
- var logger = require('../../dist/logger-018d2c78.cjs.prod.js');
11
- require('picocolors');
12
- require('debug');
13
-
14
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
15
-
16
- function _interopNamespace(e) {
17
- if (e && e.__esModule) return e;
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
29
- }
30
- n["default"] = e;
31
- return Object.freeze(n);
32
- }
33
-
34
- var path__default = /*#__PURE__*/_interopDefault(path);
35
- var cjsModuleLexer__namespace = /*#__PURE__*/_interopNamespace(cjsModuleLexer);
36
- var esModuleLexer__namespace = /*#__PURE__*/_interopNamespace(esModuleLexer);
37
-
38
- const trace = logger.trace.extend('loader');
39
-
40
- // Resolve virtual-resource-loader dependency from current package
41
- const virtualResourceLoader = require.resolve('virtual-resource-loader');
42
- function createIdentifier(lang, resourcePath, loadedTranslation) {
43
- var _loadedTranslation$la;
44
- trace('Creating identifier for language', lang);
45
- const languageTranslations = (_loadedTranslation$la = loadedTranslation.languages[lang]) !== null && _loadedTranslation$la !== void 0 ? _loadedTranslation$la : {};
46
- const langJson = {};
47
- for (const key of loadedTranslation.keys) {
48
- langJson[key] = languageTranslations[key].message;
49
- }
50
- const base64 = Buffer.from(JSON.stringify(langJson), 'utf-8').toString('base64');
51
- const unloader = `${virtualResourceLoader}?source=${encodeURIComponent(base64)}`;
52
- const fileIdent = path__default["default"].basename(resourcePath, 'translations.json');
53
- return `./${fileIdent}-${lang}-virtual.json!=!${unloader}!`;
54
- }
55
-
56
- // reimplement `stringifyRequest` from loader-utils 2.x
57
- // https://github.com/webpack/loader-utils/blob/master/CHANGELOG.md#300-2021-10-20
58
- function stringifyRequest(request) {
59
- return JSON.stringify(this.utils.contextify(this.context, request));
60
- }
61
- function renderLanguageLoaderAsync(resourcePath, loadedTranslation) {
62
- return lang => {
63
- const identifier = stringifyRequest.call(this, createIdentifier(lang, resourcePath, loadedTranslation));
64
- return /* ts */`
65
- createLanguage(
66
- require.resolveWeak(${identifier}),
67
- () => import(
68
- /* webpackChunkName: ${JSON.stringify(chunkName_dist_vocabWebpackChunkName.getChunkName(lang))} */
69
- ${identifier}
70
- )
71
- )
72
- `.trim();
73
- };
74
- }
75
- function findExportNames(source, mode) {
76
- if (mode === 'esm') {
77
- const [, exports] = esModuleLexer__namespace.parse(source);
78
- return exports;
79
- }
80
- const {
81
- exports
82
- } = cjsModuleLexer__namespace.parse(source);
83
- return exports;
84
- }
85
- async function vocabLoader(source) {
86
- trace(`Using vocab loader for ${this.resourcePath}`);
87
- const callback = this.async();
88
- if (!callback) {
89
- throw new Error(`Webpack didn't provide an async callback`);
90
- }
91
- const config = this.getOptions();
92
- const devJsonFilePath = core.getDevLanguageFileFromTsFile(this.resourcePath);
93
- const loadedTranslation = core.loadTranslation({
94
- filePath: devJsonFilePath,
95
- fallbacks: 'all'
96
- }, config);
97
- const target = this.target;
98
- if (target && target !== 'web') {
99
- trace(`Why are you using the loader on ${target}?`);
100
- callback(new Error('Called Vocab Loader with non-web target'));
101
- return;
102
- }
103
- const renderLanguageLoader = renderLanguageLoaderAsync.call(this, devJsonFilePath, loadedTranslation);
104
- const translations = /* ts */`
105
- const translations = createTranslationFile({
106
- ${Object.keys(loadedTranslation.languages).map(lang => `${JSON.stringify(lang)}: ${renderLanguageLoader(lang)}`).join(',\n')}
107
- });
108
- `;
109
- let result;
110
-
111
- // this is necessary for the Web Assembly boot
112
- await esModuleLexer__namespace.init;
113
- const esmExports = findExportNames(source, 'esm');
114
- if (esmExports.length > 0) {
115
- const exportName = esmExports[0];
116
- trace(`Found ESM export '${exportName.n}' in ${this.resourcePath}`);
117
- result = /* ts */`
118
- import { createLanguage, createTranslationFile } from '@vocab/webpack/${target}';
119
- ${translations}
120
- export { translations as ${exportName.n} };
121
- `;
122
- } else {
123
- // init needs to be called and waited upon
124
- await cjsModuleLexer__namespace.init();
125
- const exportName = findExportNames(source, 'cjs')[0];
126
- trace(`Found CJS export '${exportName}' in ${this.resourcePath}`);
127
- result = /* ts */`
128
- const { createLanguage, createTranslationFile } = require('@vocab/webpack/${target}');
129
- ${translations}
130
- exports.${exportName} = translations;
131
- `;
132
- }
133
- trace('Created translation file', result);
134
- callback(null, result);
135
- }
136
-
137
- exports["default"] = vocabLoader;
@@ -1,109 +0,0 @@
1
- import path from 'path';
2
- import { getDevLanguageFileFromTsFile, loadTranslation } from '@vocab/core';
3
- import * as cjsModuleLexer from 'cjs-module-lexer';
4
- import * as esModuleLexer from 'es-module-lexer';
5
- import { getChunkName } from '../../chunk-name/dist/vocab-webpack-chunk-name.esm.js';
6
- import { t as trace$1 } from '../../dist/logger-c5869e3f.esm.js';
7
- import 'picocolors';
8
- import 'debug';
9
-
10
- const trace = trace$1.extend('loader');
11
-
12
- // Resolve virtual-resource-loader dependency from current package
13
- const virtualResourceLoader = require.resolve('virtual-resource-loader');
14
- function createIdentifier(lang, resourcePath, loadedTranslation) {
15
- var _loadedTranslation$la;
16
- trace('Creating identifier for language', lang);
17
- const languageTranslations = (_loadedTranslation$la = loadedTranslation.languages[lang]) !== null && _loadedTranslation$la !== void 0 ? _loadedTranslation$la : {};
18
- const langJson = {};
19
- for (const key of loadedTranslation.keys) {
20
- langJson[key] = languageTranslations[key].message;
21
- }
22
- const base64 = Buffer.from(JSON.stringify(langJson), 'utf-8').toString('base64');
23
- const unloader = `${virtualResourceLoader}?source=${encodeURIComponent(base64)}`;
24
- const fileIdent = path.basename(resourcePath, 'translations.json');
25
- return `./${fileIdent}-${lang}-virtual.json!=!${unloader}!`;
26
- }
27
-
28
- // reimplement `stringifyRequest` from loader-utils 2.x
29
- // https://github.com/webpack/loader-utils/blob/master/CHANGELOG.md#300-2021-10-20
30
- function stringifyRequest(request) {
31
- return JSON.stringify(this.utils.contextify(this.context, request));
32
- }
33
- function renderLanguageLoaderAsync(resourcePath, loadedTranslation) {
34
- return lang => {
35
- const identifier = stringifyRequest.call(this, createIdentifier(lang, resourcePath, loadedTranslation));
36
- return /* ts */`
37
- createLanguage(
38
- require.resolveWeak(${identifier}),
39
- () => import(
40
- /* webpackChunkName: ${JSON.stringify(getChunkName(lang))} */
41
- ${identifier}
42
- )
43
- )
44
- `.trim();
45
- };
46
- }
47
- function findExportNames(source, mode) {
48
- if (mode === 'esm') {
49
- const [, exports] = esModuleLexer.parse(source);
50
- return exports;
51
- }
52
- const {
53
- exports
54
- } = cjsModuleLexer.parse(source);
55
- return exports;
56
- }
57
- async function vocabLoader(source) {
58
- trace(`Using vocab loader for ${this.resourcePath}`);
59
- const callback = this.async();
60
- if (!callback) {
61
- throw new Error(`Webpack didn't provide an async callback`);
62
- }
63
- const config = this.getOptions();
64
- const devJsonFilePath = getDevLanguageFileFromTsFile(this.resourcePath);
65
- const loadedTranslation = loadTranslation({
66
- filePath: devJsonFilePath,
67
- fallbacks: 'all'
68
- }, config);
69
- const target = this.target;
70
- if (target && target !== 'web') {
71
- trace(`Why are you using the loader on ${target}?`);
72
- callback(new Error('Called Vocab Loader with non-web target'));
73
- return;
74
- }
75
- const renderLanguageLoader = renderLanguageLoaderAsync.call(this, devJsonFilePath, loadedTranslation);
76
- const translations = /* ts */`
77
- const translations = createTranslationFile({
78
- ${Object.keys(loadedTranslation.languages).map(lang => `${JSON.stringify(lang)}: ${renderLanguageLoader(lang)}`).join(',\n')}
79
- });
80
- `;
81
- let result;
82
-
83
- // this is necessary for the Web Assembly boot
84
- await esModuleLexer.init;
85
- const esmExports = findExportNames(source, 'esm');
86
- if (esmExports.length > 0) {
87
- const exportName = esmExports[0];
88
- trace(`Found ESM export '${exportName.n}' in ${this.resourcePath}`);
89
- result = /* ts */`
90
- import { createLanguage, createTranslationFile } from '@vocab/webpack/${target}';
91
- ${translations}
92
- export { translations as ${exportName.n} };
93
- `;
94
- } else {
95
- // init needs to be called and waited upon
96
- await cjsModuleLexer.init();
97
- const exportName = findExportNames(source, 'cjs')[0];
98
- trace(`Found CJS export '${exportName}' in ${this.resourcePath}`);
99
- result = /* ts */`
100
- const { createLanguage, createTranslationFile } = require('@vocab/webpack/${target}');
101
- ${translations}
102
- exports.${exportName} = translations;
103
- `;
104
- }
105
- trace('Created translation file', result);
106
- callback(null, result);
107
- }
108
-
109
- export { vocabLoader as default };
@@ -1,4 +0,0 @@
1
- {
2
- "main": "dist/vocab-webpack-loader.cjs.js",
3
- "module": "dist/vocab-webpack-loader.esm.js"
4
- }
@@ -1,2 +0,0 @@
1
- export * from "../../dist/declarations/src/web.js";
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9jYWItd2VicGFjay13ZWIuY2pzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9kaXN0L2RlY2xhcmF0aW9ucy9zcmMvd2ViLmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEifQ==