create-absolutejs 0.3.4 → 0.3.6

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,7 +1,7 @@
1
1
  import type { AvailableDependency, CreateConfiguration } from '../../types';
2
2
  type CreateServerFileProps = Pick<CreateConfiguration, 'tailwind' | 'authProvider' | 'plugins' | 'buildDirectory' | 'assetsDirectory' | 'frontendDirectories'> & {
3
3
  availablePlugins: AvailableDependency[];
4
- serverFilePath: string;
4
+ backendDirectory: string;
5
5
  };
6
- export declare const createServerFile: ({ tailwind, frontendDirectories, serverFilePath, authProvider, availablePlugins, buildDirectory, assetsDirectory, plugins }: CreateServerFileProps) => void;
6
+ export declare const generateServerFile: ({ tailwind, frontendDirectories, backendDirectory, authProvider, availablePlugins, buildDirectory, assetsDirectory, plugins }: CreateServerFileProps) => void;
7
7
  export {};
@@ -1,7 +1,10 @@
1
- import { writeFileSync } from 'fs';
1
+ import { mkdirSync, writeFileSync } from 'fs';
2
+ import { join } from 'path';
2
3
  import { UNFOUND_INDEX } from '../../constants';
3
4
  import { absoluteAuthPlugin, defaultDependencies, defaultPlugins, scopedStatePlugin } from '../../data';
4
- export const createServerFile = ({ tailwind, frontendDirectories, serverFilePath, authProvider, availablePlugins, buildDirectory, assetsDirectory, plugins }) => {
5
+ export const generateServerFile = ({ tailwind, frontendDirectories, backendDirectory, authProvider, availablePlugins, buildDirectory, assetsDirectory, plugins }) => {
6
+ const serverFilePath = join(backendDirectory, 'server.ts');
7
+ console.log(`Generating server file at ${serverFilePath}`);
5
8
  const htmlDirectory = frontendDirectories['html'];
6
9
  const reactDirectory = frontendDirectories['react'];
7
10
  const svelteDirectory = frontendDirectories['svelte'];
@@ -87,7 +90,25 @@ export const createServerFile = ({ tailwind, frontendDirectories, serverFilePath
87
90
  const vueImportSource = vueDirectory === ''
88
91
  ? '../frontend/pages/VueExample'
89
92
  : `../frontend/${vueDirectory}/pages/VueExample`;
90
- importLines.push(`import VueExample from '${vueImportSource}.vue';`);
93
+ const vueImportLine = requiresSvelte
94
+ ? `import { vueImports } from './utils/vueImporter';\n\nconst { VueExample } = vueImports;`
95
+ : `import VueExample from '${vueImportSource}.vue';`;
96
+ importLines.push(vueImportLine);
97
+ }
98
+ if (requiresVue && requiresSvelte) {
99
+ const vueImporter = `// This file is auto-generated by the AbsoluteJS project generator.
100
+ // It is required to use Vue and Svelte together in the same project.
101
+ // This is due to how the Vue Official plugin handles non .ts files.
102
+
103
+ import VueExample from "../../frontend/vue/pages/VueExample.vue";
104
+
105
+ export const vueImports = {
106
+ VueExample
107
+ } as const;
108
+ `;
109
+ const backendUtilsDirectory = join(backendDirectory, 'utils');
110
+ mkdirSync(backendUtilsDirectory, { recursive: true });
111
+ writeFileSync(join(backendUtilsDirectory, 'vueImporter.ts'), vueImporter);
91
112
  }
92
113
  const useStatements = uniqueDependencies
93
114
  .flatMap(({ imports }) => imports ?? [])
@@ -102,7 +123,7 @@ export const createServerFile = ({ tailwind, frontendDirectories, serverFilePath
102
123
  const manifestOptions = [
103
124
  `assetsDirectory: '${assetsDirectory}'`,
104
125
  `buildDirectory: '${buildDirectory}'`,
105
- ...Object.entries(frontendDirectories).map(([frameworkName, directory]) => `${frameworkName}Directory: './src/frontend/${directory}'`),
126
+ ...Object.entries(frontendDirectories).map(([frameworkName, directory]) => `${frameworkName}Directory: 'src/frontend/${directory}'`),
106
127
  tailwind ? `tailwind: ${JSON.stringify(tailwind)}` : ''
107
128
  ].filter(Boolean);
108
129
  const manifestDeclaration = `${nonFrameworkOnly ? '' : 'const manifest = '}await build({
package/dist/scaffold.js CHANGED
@@ -8,7 +8,7 @@ import { addConfigurationFiles } from './generators/configurations/addConfigurat
8
8
  import { createPackageJson } from './generators/configurations/generatePackageJson';
9
9
  import { initalizeRoot } from './generators/configurations/initializeRoot';
10
10
  import { scaffoldDatabase } from './generators/db/scaffoldDatabase';
11
- import { createServerFile } from './generators/project/generateServer';
11
+ import { generateServerFile } from './generators/project/generateServer';
12
12
  import { scaffoldFrontends } from './generators/project/scaffoldFrontends';
13
13
  export const scaffold = ({ response: { projectName, codeQualityTool, initializeGitNow, databaseEngine,
14
14
  // databaseHost,
@@ -34,15 +34,14 @@ useHTMLScripts, useTailwind, databaseDirectory, orm, frontends, plugins, authPro
34
34
  projectName,
35
35
  useTailwind
36
36
  });
37
- const serverFilePath = join(backendDirectory, 'server.ts');
38
- createServerFile({
37
+ generateServerFile({
39
38
  assetsDirectory,
40
39
  authProvider,
41
40
  availablePlugins,
41
+ backendDirectory,
42
42
  buildDirectory,
43
43
  frontendDirectories,
44
44
  plugins,
45
- serverFilePath,
46
45
  tailwind
47
46
  });
48
47
  void (databaseDirectory !== undefined &&
package/package.json CHANGED
@@ -47,5 +47,5 @@
47
47
  "typecheck": "bun run tsc --noEmit"
48
48
  },
49
49
  "type": "module",
50
- "version": "0.3.4"
50
+ "version": "0.3.6"
51
51
  }