@jungvonmatt/contentful-ssg 1.11.1 → 1.11.2

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,5 +1,6 @@
1
- import swcRegister from '@swc-node/register';
1
+ import vm from 'vm';
2
2
  import chalk from 'chalk';
3
+ import { transformSync } from '@swc/core';
3
4
  import { gracefulExit } from 'exit-hook';
4
5
  import { cosmiconfig } from 'cosmiconfig';
5
6
  import mergeOptionsModule from 'merge-options';
@@ -8,13 +9,64 @@ import slash from 'slash';
8
9
  import { reduceAsync } from './array.js';
9
10
  import { createRequire } from './create-require.js';
10
11
  import { isObject, removeEmpty } from './object.js';
11
- const { register } = swcRegister;
12
- const typescriptLoader = async (filePath) => {
13
- register({ format: 'esm', extensions: ['.ts', '.tsx', '.mts'] });
14
- const require = createRequire();
15
- const configModule = require(filePath);
16
- return configModule.default || configModule;
12
+ const getContext = (filename) => {
13
+ const module = {
14
+ exports: {},
15
+ isPreloading: false,
16
+ require: createRequire(dirname(filename)),
17
+ id: '',
18
+ filename,
19
+ loaded: false,
20
+ parent: undefined,
21
+ children: [],
22
+ path: dirname(filename),
23
+ paths: [dirname(filename)],
24
+ };
25
+ const sandbox = {
26
+ module,
27
+ exports: {},
28
+ process: { env: process.env },
29
+ require: module.require,
30
+ __dirname: dirname(filename),
31
+ __filename: filename,
32
+ };
33
+ vm.createContext(sandbox);
34
+ return sandbox;
35
+ };
36
+ const getLoader = (syntax) => (filename, content) => {
37
+ const context = getContext(filename);
38
+ const script = transformSync(content, {
39
+ isModule: /\s(export|import)\s/.test(content),
40
+ module: {
41
+ type: 'commonjs',
42
+ },
43
+ cwd: dirname(filename),
44
+ jsc: {
45
+ parser: {
46
+ syntax,
47
+ dynamicImport: true,
48
+ },
49
+ },
50
+ });
51
+ const vmScript = new vm.Script(script.code);
52
+ try {
53
+ vmScript.runInContext(context, { filename, timeout: 10000 });
54
+ }
55
+ catch (error) {
56
+ console.log(error);
57
+ }
58
+ if (Object.keys(context.module.exports).length > 0) {
59
+ const result = (context.module.exports.default || context.module.exports);
60
+ return { ...result };
61
+ }
62
+ if (Object.keys(context.exports).length > 0) {
63
+ const result = (context.exports.default || context.exports);
64
+ return { ...result };
65
+ }
66
+ return {};
17
67
  };
68
+ const typescriptLoader = getLoader('typescript');
69
+ const ecmascriptLoader = getLoader('ecmascript');
18
70
  const mergeOptions = mergeOptionsModule.bind({ ignoreUndefined: true });
19
71
  const resolvePlugin = async (plugin, config) => {
20
72
  let pluginName;
@@ -68,9 +120,14 @@ const loadConfig = async (moduleName) => {
68
120
  `.${moduleName}rc.js`,
69
121
  `${moduleName}.config.ts`,
70
122
  `${moduleName}.config.js`,
123
+ `${moduleName}.config.cjs`,
124
+ `${moduleName}.config.mjs`,
71
125
  ],
72
126
  loaders: {
73
127
  '.ts': typescriptLoader,
128
+ '.js': ecmascriptLoader,
129
+ '.cjs': ecmascriptLoader,
130
+ '.mjs': ecmascriptLoader,
74
131
  },
75
132
  });
76
133
  return explorer.search();
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,5 @@
1
1
  /// <reference types="node" />
2
+ export declare function compile(sourcecode: string, filename: string, async?: false): string;
3
+ export declare function compile(sourcecode: string, filename: string, async?: boolean): string | Promise<string>;
4
+ export declare function registerRequireHook(hookOpts?: {}): () => void;
2
5
  export declare const createRequire: (rootDir?: string) => NodeRequire;
@@ -1,5 +1,43 @@
1
+ import { dirname } from 'path';
2
+ import { transform, transformSync } from '@swc/core';
3
+ import { addHook } from 'pirates';
1
4
  import { createRequire as moduleCreateRequire } from 'module';
2
- export const createRequire = (rootDir = null) => rootDir === null
3
- ? moduleCreateRequire(import.meta.url)
4
- : moduleCreateRequire(`${rootDir}/:internal:`);
5
+ const defaultExtensions = ['.js', '.jsx', '.es6', '.es', '.mjs', '.ts', '.tsx'];
6
+ const getTsOptions = (filename) => ({
7
+ module: {
8
+ type: 'commonjs',
9
+ },
10
+ cwd: dirname(filename),
11
+ jsc: {
12
+ parser: {
13
+ syntax: 'typescript',
14
+ dynamicImport: true,
15
+ },
16
+ },
17
+ });
18
+ export function compile(sourcecode, filename, async = false) {
19
+ if (filename.endsWith('.d.ts')) {
20
+ return '';
21
+ }
22
+ if (async) {
23
+ return transform(sourcecode, getTsOptions(filename)).then(({ code }) => {
24
+ return code;
25
+ });
26
+ }
27
+ const { code } = transformSync(sourcecode, getTsOptions(filename));
28
+ return code;
29
+ }
30
+ export function registerRequireHook(hookOpts = {}) {
31
+ return addHook((code, filename) => compile(code, filename), {
32
+ exts: defaultExtensions,
33
+ ignoreNodeModules: true,
34
+ ...hookOpts,
35
+ });
36
+ }
37
+ export const createRequire = (rootDir = null) => {
38
+ registerRequireHook();
39
+ return rootDir === null
40
+ ? moduleCreateRequire(import.meta.url)
41
+ : moduleCreateRequire(`${rootDir}/:internal:`);
42
+ };
5
43
  //# sourceMappingURL=create-require.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-require.js","sourceRoot":"","sources":["../../src/lib/create-require.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAE9D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAkB,IAAI,EAAe,EAAE,CACnE,OAAO,KAAK,IAAI;IACd,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACtC,CAAC,CAAC,mBAAmB,CAAC,GAAG,OAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"create-require.js","sourceRoot":"","sources":["../../src/lib/create-require.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAW,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAE9D,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAEhF,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAW,EAAE,CAAC,CAAC;IACnD,MAAM,EAAE;QACN,IAAI,EAAE,UAAU;KACjB;IACD,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC;IACtB,GAAG,EAAE;QACH,MAAM,EAAE;YACN,MAAM,EAAE,YAAY;YACpB,aAAa,EAAE,IAAI;SACpB;KACF;CACF,CAAC,CAAC;AAUH,MAAM,UAAU,OAAO,CAAC,UAAkB,EAAE,QAAgB,EAAE,KAAK,GAAG,KAAK;IACzE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC9B,OAAO,EAAE,CAAC;KACX;IAED,IAAI,KAAK,EAAE;QACT,OAAO,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACrE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAQ,GAAG,EAAE;IAC/C,OAAO,OAAO,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;QAC1D,IAAI,EAAE,iBAAiB;QACvB,iBAAiB,EAAE,IAAI;QACvB,GAAG,QAAQ;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAkB,IAAI,EAAe,EAAE;IACnE,mBAAmB,EAAE,CAAC;IAEtB,OAAO,OAAO,KAAK,IAAI;QACrB,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACtC,CAAC,CAAC,mBAAmB,CAAC,GAAG,OAAO,aAAa,CAAC,CAAC;AACnD,CAAC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { Options } from '@contentful/rich-text-html-renderer';
2
3
  import type { Document } from '@contentful/rich-text-types';
3
4
  import type { Observable, ReplaySubject } from 'rxjs';
@@ -219,3 +220,13 @@ export interface ErrorEntry {
219
220
  locale: Locale;
220
221
  missingFields: string[];
221
222
  }
223
+ export declare type SandboxContext = {
224
+ module?: NodeModule;
225
+ exports: Record<string, any>;
226
+ process: {
227
+ env: NodeJS.ProcessEnv;
228
+ };
229
+ require: NodeRequire;
230
+ __dirname: string;
231
+ __filename: string;
232
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jungvonmatt/contentful-ssg",
3
- "version": "1.11.1",
3
+ "version": "1.11.2",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -73,7 +73,6 @@
73
73
  "@contentful/rich-text-types": "^15.6.2",
74
74
  "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
75
75
  "@iarna/toml": "^2.2.5",
76
- "@swc-node/register": "^1.6.1",
77
76
  "chalk": "^4.1.2",
78
77
  "commander": "^8.3.0",
79
78
  "contentful": "^9.1.4",
@@ -145,5 +144,5 @@
145
144
  "module": "es2020"
146
145
  }
147
146
  },
148
- "gitHead": "c51841d9f065e9b4a01b1fcaedbd15d2d7d858ba"
147
+ "gitHead": "8a7914920a6c1d50e0f4971c2a746ea7043e73a6"
149
148
  }
package/src/lib/config.ts CHANGED
@@ -1,5 +1,6 @@
1
- import swcRegister from '@swc-node/register';
1
+ import vm from 'vm';
2
2
  import chalk from 'chalk';
3
+ import { transformSync, Options } from '@swc/core';
3
4
  import { gracefulExit } from 'exit-hook';
4
5
  import { cosmiconfig, Loader } from 'cosmiconfig';
5
6
  import type { CosmiconfigResult } from 'cosmiconfig/dist/types';
@@ -14,24 +15,83 @@ import type {
14
15
  KeyValueMap,
15
16
  PluginInfo,
16
17
  PluginModule,
18
+ SandboxContext,
17
19
  } from '../types.js';
18
20
  import { reduceAsync } from './array.js';
19
21
  import { createRequire } from './create-require.js';
20
22
  import { isObject, removeEmpty } from './object.js';
21
23
 
22
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
23
- const { register } = swcRegister;
24
+ const getContext = (filename: string): vm.Context => {
25
+ const module: NodeModule = {
26
+ exports: {},
27
+ isPreloading: false,
28
+ require: createRequire(dirname(filename)),
29
+ id: '',
30
+ filename,
31
+ loaded: false,
32
+ parent: undefined,
33
+ children: [],
34
+ path: dirname(filename),
35
+ paths: [dirname(filename)],
36
+ };
24
37
 
25
- const typescriptLoader: Loader = async (filePath: string): Promise<any> => {
26
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
27
- register({ format: 'esm', extensions: ['.ts', '.tsx', '.mts'] });
38
+ const sandbox: SandboxContext = {
39
+ module,
40
+ exports: {},
41
+ process: { env: process.env },
42
+ require: module.require,
43
+ __dirname: dirname(filename),
44
+ __filename: filename,
45
+ };
46
+ vm.createContext(sandbox);
28
47
 
29
- const require = createRequire();
30
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
31
- const configModule = require(filePath);
32
- return configModule.default || configModule;
48
+ return sandbox;
33
49
  };
34
50
 
51
+ const getLoader =
52
+ (syntax: Options['jsc']['parser']['syntax']) => (filename: string, content: string) => {
53
+ const context = getContext(filename);
54
+ const script = transformSync(content, {
55
+ isModule: /\s(export|import)\s/.test(content),
56
+ module: {
57
+ type: 'commonjs',
58
+ },
59
+ cwd: dirname(filename),
60
+ jsc: {
61
+ parser: {
62
+ syntax,
63
+ dynamicImport: true,
64
+ },
65
+ },
66
+ });
67
+
68
+ const vmScript = new vm.Script(script.code);
69
+
70
+ try {
71
+ vmScript.runInContext(context, { filename, timeout: 10000 });
72
+ } catch (error: unknown) {
73
+ console.log(error);
74
+ }
75
+
76
+ // Handle module (even if the transpiled code should be commonjs exports)
77
+ if (Object.keys(context.module.exports).length > 0) {
78
+ const result = (context.module.exports.default || context.module.exports) as Config;
79
+ return { ...result };
80
+ }
81
+
82
+ // Handle commonjs export
83
+ if (Object.keys(context.exports).length > 0) {
84
+ const result = (context.exports.default || context.exports) as Config;
85
+
86
+ return { ...result };
87
+ }
88
+
89
+ return {};
90
+ };
91
+
92
+ const typescriptLoader: Loader = getLoader('typescript');
93
+ const ecmascriptLoader: Loader = getLoader('ecmascript');
94
+
35
95
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
36
96
  const mergeOptions = mergeOptionsModule.bind({ ignoreUndefined: true });
37
97
 
@@ -102,9 +162,14 @@ const loadConfig = async (moduleName: string): Promise<CosmiconfigResult> => {
102
162
  `.${moduleName}rc.js`,
103
163
  `${moduleName}.config.ts`,
104
164
  `${moduleName}.config.js`,
165
+ `${moduleName}.config.cjs`,
166
+ `${moduleName}.config.mjs`,
105
167
  ],
106
168
  loaders: {
107
169
  '.ts': typescriptLoader,
170
+ '.js': ecmascriptLoader,
171
+ '.cjs': ecmascriptLoader,
172
+ '.mjs': ecmascriptLoader,
108
173
  },
109
174
  });
110
175
 
@@ -172,6 +237,7 @@ export const getConfig = async (args: Partial<Config> = {}): Promise<Config> =>
172
237
  try {
173
238
  // Get configuration from contentful-ssg rc file
174
239
  const configFile = await loadConfig('contentful-ssg');
240
+
175
241
  if (configFile && !configFile.isEmpty) {
176
242
  configFileOptions = configFile.config as Partial<Config>;
177
243
  args.rootDir = dirname(configFile.filepath);
@@ -1,6 +1,59 @@
1
+ import { dirname } from 'path';
2
+ import { transform, transformSync, Options } from '@swc/core';
3
+ import { addHook } from 'pirates';
1
4
  import { createRequire as moduleCreateRequire } from 'module';
2
5
 
3
- export const createRequire = (rootDir: string = null): NodeRequire =>
4
- rootDir === null
6
+ const defaultExtensions = ['.js', '.jsx', '.es6', '.es', '.mjs', '.ts', '.tsx'];
7
+
8
+ const getTsOptions = (filename: string): Options => ({
9
+ module: {
10
+ type: 'commonjs',
11
+ },
12
+ cwd: dirname(filename),
13
+ jsc: {
14
+ parser: {
15
+ syntax: 'typescript',
16
+ dynamicImport: true,
17
+ },
18
+ },
19
+ });
20
+
21
+ export function compile(sourcecode: string, filename: string, async?: false): string;
22
+
23
+ export function compile(
24
+ sourcecode: string,
25
+ filename: string,
26
+ async?: boolean
27
+ ): string | Promise<string>;
28
+
29
+ export function compile(sourcecode: string, filename: string, async = false) {
30
+ if (filename.endsWith('.d.ts')) {
31
+ return '';
32
+ }
33
+
34
+ if (async) {
35
+ return transform(sourcecode, getTsOptions(filename)).then(({ code }) => {
36
+ return code;
37
+ });
38
+ }
39
+
40
+ const { code } = transformSync(sourcecode, getTsOptions(filename));
41
+
42
+ return code;
43
+ }
44
+
45
+ export function registerRequireHook(hookOpts = {}) {
46
+ return addHook((code, filename) => compile(code, filename), {
47
+ exts: defaultExtensions,
48
+ ignoreNodeModules: true,
49
+ ...hookOpts,
50
+ });
51
+ }
52
+
53
+ export const createRequire = (rootDir: string = null): NodeRequire => {
54
+ registerRequireHook();
55
+
56
+ return rootDir === null
5
57
  ? moduleCreateRequire(import.meta.url)
6
58
  : moduleCreateRequire(`${rootDir}/:internal:`);
59
+ };
package/src/types.ts CHANGED
@@ -309,3 +309,12 @@ export interface ErrorEntry {
309
309
  locale: Locale;
310
310
  missingFields: string[];
311
311
  }
312
+
313
+ export type SandboxContext = {
314
+ module?: NodeModule;
315
+ exports: Record<string, any>;
316
+ process: { env: NodeJS.ProcessEnv };
317
+ require: NodeRequire;
318
+ __dirname: string;
319
+ __filename: string;
320
+ };