@fernir2/saas-kit-cli 0.1.37 → 0.1.38
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/base-repo/app-constants/aliases.cjs.js +1 -1
- package/base-repo/app-constants/aliases.js +1 -1
- package/base-repo/app-constants/project-paths.cjs.js +1 -1
- package/base-repo/app-constants/project-paths.js +1 -1
- package/base-repo/constants/create-app-constants.cjs.js +1 -1
- package/base-repo/constants/create-app-constants.js +2 -2
- package/cli/bin/create.ts +19 -10
- package/cli/configs/drizzle-cli-config.ts +1 -0
- package/cli/configs/next-cli-config.ts +78 -0
- package/cli/configs/playwright-cli-config.ts +1 -0
- package/cli/configs/tsconfig.cli.json +0 -2
- package/cli/next.config.js +2 -72
- package/cli/package-template.json +3 -4
- package/cli/server.ts +2 -3
- package/cli/src/app/api/v1/(f)/[resourceName]/[id]/route.ts +11 -0
- package/cli/src/app/api/v1/(f)/[resourceName]/route.ts +14 -0
- package/cli/src/app/api/v1/(f)/[resourceName]/upsert/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/blob/route.ts +7 -0
- package/cli/src/app/api/v1/(f)/log/route.ts +7 -0
- package/cli/src/app/api/v1/(f)/other-user/[id]/route.ts +14 -0
- package/cli/src/app/api/v1/(f)/other-user/route.ts +7 -0
- package/cli/src/app/api/v1/(f)/password/forgot-password/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/password/reset-password/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/payment/method/route.ts +4 -0
- package/cli/src/app/api/v1/(f)/payment/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/payment/verify-fail/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/payment/verify-success/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/preload/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/search-result/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/searchable-resources/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/sign-in/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/sign-out/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/sign-up/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/subscription/cancel/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/subscription/create/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/subscription/update/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/uimeta/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/uimetas/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/user-feature/isenabled/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/user-permission/route.ts +3 -0
- package/cli/src/app/api/v1/(f)/visible-workspace/route.ts +5 -0
- package/cli/src/app/api/v1/(f)/workspace/change/route.ts +5 -0
- package/cli/src/app/f/api-docs/page.tsx +15 -0
- package/cli/src/app/f/edit-password/page.tsx +8 -0
- package/cli/src/app/f/forgot-password/page.tsx +13 -0
- package/cli/src/app/f/reset-password/page.tsx +11 -0
- package/cli/src/app/layout.tsx +2 -11
- package/cli/tsconfig.json +2 -15
- package/cli/tsconfig.server.json +0 -3
- package/fd-toolbox/api/api-client.cjs.js +1 -1
- package/fd-toolbox/api/api-client.js +1 -1
- package/fd-toolbox/api/api-path-names.cjs.js +2 -2
- package/fd-toolbox/api/api-path-names.js +1 -1
- package/fd-toolbox/api/api-paths.cjs.js +1 -1
- package/fd-toolbox/api/api-paths.js +1 -1
- package/fd-toolbox/api/base-api.cjs.js +1 -1
- package/fd-toolbox/api/base-api.js +1 -1
- package/fd-toolbox/auth/login-states.cjs.js +1 -1
- package/fd-toolbox/auth/login-states.js +1 -1
- package/fd-toolbox/auth/session-storage.cjs.js +1 -1
- package/fd-toolbox/auth/session-storage.js +1 -1
- package/fd-toolbox/auth/tokens.cjs.js +1 -1
- package/fd-toolbox/auth/tokens.js +1 -1
- package/fd-toolbox/constants/constants.cjs.js +1 -1
- package/fd-toolbox/constants/constants.js +1 -1
- package/fd-toolbox/enums/enums.cjs.js +1 -1
- package/fd-toolbox/enums/enums.js +1 -1
- package/fd-toolbox/errors/error-handler.cjs.js +1 -1
- package/fd-toolbox/errors/error-handler.js +1 -1
- package/fd-toolbox/errors/errors.cjs.js +1 -1
- package/fd-toolbox/errors/errors.js +1 -1
- package/fd-toolbox/errors/problem-details.cjs.js +1 -1
- package/fd-toolbox/errors/problem-details.js +1 -1
- package/fd-toolbox/functions/value-checking-functions.cjs.js +1 -1
- package/fd-toolbox/functions/value-checking-functions.js +1 -1
- package/fd-toolbox/http/url/urls.cjs.js +1 -1
- package/fd-toolbox/http/url/urls.js +1 -1
- package/fd-toolbox/infra/env-config.cjs.js +2 -2
- package/fd-toolbox/infra/env-config.js +2 -2
- package/fd-toolbox/infra/env-functions.cjs.js +1 -1
- package/fd-toolbox/infra/env-functions.js +1 -1
- package/fd-toolbox/infra/env-schema.cjs.js +2 -2
- package/fd-toolbox/infra/env-schema.js +2 -2
- package/fd-toolbox/infra/env-store.cjs.js +1 -1
- package/fd-toolbox/infra/env-store.js +1 -1
- package/fd-toolbox/infra/toolbox-env-setting-keys.cjs.js +1 -1
- package/fd-toolbox/infra/toolbox-env-setting-keys.js +1 -1
- package/fd-toolbox/lib/environments.cjs.js +1 -1
- package/fd-toolbox/lib/environments.js +1 -1
- package/fd-toolbox/lib/utils.cjs.js +1 -1
- package/fd-toolbox/lib/utils.js +1 -1
- package/fd-toolbox/local-storage/local-storage.cjs.js +1 -1
- package/fd-toolbox/local-storage/local-storage.js +1 -1
- package/fd-toolbox/logging/loggers.cjs.js +1 -1
- package/fd-toolbox/logging/loggers.js +1 -1
- package/fd-toolbox/notifications.cjs.js +2 -2
- package/fd-toolbox/notifications.js +2 -2
- package/fd-toolbox/odata/odata-constants.cjs.js +1 -1
- package/fd-toolbox/odata/odata-constants.js +1 -1
- package/fd-toolbox/odata/odatas.cjs.js +1 -1
- package/fd-toolbox/odata/odatas.js +1 -1
- package/fd-toolbox/odata/services/odata-filters.cjs.js +1 -1
- package/fd-toolbox/odata/services/odata-filters.js +1 -1
- package/fd-toolbox/paths/paths-names.cjs.js +2 -2
- package/fd-toolbox/paths/paths-names.js +1 -1
- package/fd-toolbox/routing/login-routers.cjs.js +1 -1
- package/fd-toolbox/routing/login-routers.js +1 -1
- package/fd-toolbox/routing/paths.cjs.js +1 -1
- package/fd-toolbox/routing/paths.js +1 -1
- package/fd-toolbox/routing/routes.cjs.js +1 -1
- package/fd-toolbox/routing/routes.js +1 -1
- package/fd-toolbox/strings/strings-constants.cjs.js +1 -1
- package/fd-toolbox/strings/strings-constants.js +1 -1
- package/fd-toolbox/strings/strings.cjs.js +1 -1
- package/fd-toolbox/strings/strings.js +1 -1
- package/fd-toolbox/types/ensure-type.cjs.js +1 -1
- package/fd-toolbox/types/ensure-type.js +1 -1
- package/fd-toolbox-core/core/name-of.cjs.js +1 -1
- package/fd-toolbox-core/core/name-of.js +1 -1
- package/fd-toolbox-core/types/resource-with-id.cjs.js +1 -1
- package/fd-toolbox-core/types/resource-with-id.js +1 -1
- package/level2/cli/bin/index.cjs.js +1 -1
- package/level2/cli/bin/index.js +1 -1
- package/level2/cli/create/bin/create.cjs.js +4 -4
- package/level2/cli/create/bin/create.js +3 -3
- package/level2/npm-commands/build-npm/path.cjs.js +2 -1
- package/level2/npm-commands/build-npm/path.js +3 -3
- package/package.json +10 -10
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const aliasSymbols={'atSign':'@','rootAlias':'@root/'};const typescriptAliases={'@':'./src','@cli':'./packages/level2/cli','@server':'./packages/level2/server','@schemas':'./generated','@npm-commands':'./packages/level2/npm-commands','@root':'.','@enricher':'./packages/level2/enricher','@packages':'./packages','@common':'./packages/level2/common','@meta':'./packages/level2/meta','@fd-toolbox':'./packages/fd-toolbox','@fd-toolbox-core':'./packages/fd-toolbox-core','@fd-component-toolbox':'./packages/level2/fd-component-toolbox','@fd-app-toolbox':'./packages/level2/fd-app-toolbox','@client':'./packages/level2/client'};const modulePathAliases=Object['fromEntries'](Object['entries'](typescriptAliases)['map'](([
|
|
4
|
+
const aliasSymbols={'atSign':'@','rootAlias':'@root/'};const typescriptAliases={'@':'./src','@cli':'./packages/level2/cli','@server':'./packages/level2/server','@schemas':'./generated','@npm-commands':'./packages/level2/npm-commands','@root':'.','@enricher':'./packages/level2/enricher','@packages':'./packages','@common':'./packages/level2/common','@meta':'./packages/level2/meta','@fd-toolbox':'./packages/fd-toolbox','@fd-toolbox-core':'./packages/fd-toolbox-core','@fd-component-toolbox':'./packages/level2/fd-component-toolbox','@fd-app-toolbox':'./packages/level2/fd-app-toolbox','@client':'./packages/level2/client'};const modulePathAliases=Object['fromEntries'](Object['entries'](typescriptAliases)['map'](([_0x18307e,_0x2f7cb4])=>[_0x18307e+'/*',[_0x2f7cb4+'/*']]));
|
|
5
5
|
|
|
6
6
|
exports.aliasSymbols = aliasSymbols;
|
|
7
7
|
exports.modulePathAliases = modulePathAliases;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
const aliasSymbols={'atSign':'@','rootAlias':'@root/'};const typescriptAliases={'@':'./src','@cli':'./packages/level2/cli','@server':'./packages/level2/server','@schemas':'./generated','@npm-commands':'./packages/level2/npm-commands','@root':'.','@enricher':'./packages/level2/enricher','@packages':'./packages','@common':'./packages/level2/common','@meta':'./packages/level2/meta','@fd-toolbox':'./packages/fd-toolbox','@fd-toolbox-core':'./packages/fd-toolbox-core','@fd-component-toolbox':'./packages/level2/fd-component-toolbox','@fd-app-toolbox':'./packages/level2/fd-app-toolbox','@client':'./packages/level2/client'};const modulePathAliases=Object['fromEntries'](Object['entries'](typescriptAliases)['map'](([
|
|
2
|
+
const aliasSymbols={'atSign':'@','rootAlias':'@root/'};const typescriptAliases={'@':'./src','@cli':'./packages/level2/cli','@server':'./packages/level2/server','@schemas':'./generated','@npm-commands':'./packages/level2/npm-commands','@root':'.','@enricher':'./packages/level2/enricher','@packages':'./packages','@common':'./packages/level2/common','@meta':'./packages/level2/meta','@fd-toolbox':'./packages/fd-toolbox','@fd-toolbox-core':'./packages/fd-toolbox-core','@fd-component-toolbox':'./packages/level2/fd-component-toolbox','@fd-app-toolbox':'./packages/level2/fd-app-toolbox','@client':'./packages/level2/client'};const modulePathAliases=Object['fromEntries'](Object['entries'](typescriptAliases)['map'](([_0x18307e,_0x2f7cb4])=>[_0x18307e+'/*',[_0x2f7cb4+'/*']]));
|
|
3
3
|
|
|
4
4
|
export { aliasSymbols, modulePathAliases, typescriptAliases };
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
var aliasSymbols = require('./alias-symbols.cjs.js');
|
|
5
5
|
var packages = require('../constants/packages.cjs2.js');
|
|
6
6
|
|
|
7
|
-
const folders={'src':'src','baseRepo':'base-repo','cli':'cli','common':'common','docs':'docs','enricher':'enricher','fdAppToolbox':'fd-app-toolbox','fdComponentToolbox':'fd-component-toolbox','fdToolbox':'fd-toolbox','fdToolboxCore':'fd-toolbox-core','flint':'flint','infra':'infra','internalCli':'internal-cli','meta':'meta','npmCommands':'npm-commands','other':'other','server':'server','test':'test','tools':'tools','client':'client','generated':'generated','dist':'dist','lib':'lib','packages':'packages','package':'package','public':'public','build':'build','bin':'bin','buildNpm':'build-npm','genExports':'gen-exports','modules':'modules','generatedTests':'generated-tests','nodeModules':'node_modules','next':'.next','nodeCache':'.node_cache','nx':'.nx','vscode':'.vscode','git':'.git','playwrightReport':'playwright-report','testResults':'test-results','rollup':'rollup','replaceAliases':'replace-aliases','pages':'pages','deploy':'deploy','level2':'level2','monorepo':'monorepo','content':'content','components':'components','app':'app','framework':'framework','api':'api','ci':'ci','jobs':'jobs','web':'web','cliPackage':'cli-package','createSaasKitApp':'create','setup':'setup','husky':'.husky','constants':'constants','configs':'configs'};const files={'route':'route.ts','metaJson':'meta.json','schema':'schema.ts','schemaDts':'schema.d.ts','schemaJs':'schema.js','crudHandlerMap':'crud-handler-map.ts','tsconfig':'tsconfig.json','tsconfigBase':'tsconfig.base.json','tsconfigResources':'tsconfig.resources.json','tsconfigLint':'tsconfig.lint.json','tsconfigCli':'tsconfig.cli.json','tsconfigServer':'tsconfig.server.json','tailwindConfig':'tailwind.config.ts','packageJson':'package.json','env':'.env','envExample':'.env.example','npmConfig':'.npmrc','nextEnv':'next-env.d.ts','license':'LICENSE','pnpmLock':'pnpm-lock.yaml','indexJs':'index.js','preCommitScript':'pre-commit-script.ts','preCommit':'pre-commit','commitMsg':'commit-msg','packageTemplate':'package-template.json','eslintConfigJs':'eslint.config.js','eslintConfigMjs':'eslint.config.mjs','layout':'layout.tsx'};const projectPaths={'root':'/','src':folders['src'],'app':folders['src']+'/'+folders['app'],'apiV1':folders['src']+'/'+folders['app']+'/'+folders['api']+'/
|
|
7
|
+
const folders={'src':'src','baseRepo':'base-repo','cli':'cli','common':'common','docs':'docs','enricher':'enricher','fdAppToolbox':'fd-app-toolbox','fdComponentToolbox':'fd-component-toolbox','fdToolbox':'fd-toolbox','fdToolboxCore':'fd-toolbox-core','flint':'flint','infra':'infra','internalCli':'internal-cli','meta':'meta','npmCommands':'npm-commands','other':'other','server':'server','test':'test','tools':'tools','client':'client','generated':'generated','dist':'dist','lib':'lib','packages':'packages','package':'package','public':'public','build':'build','bin':'bin','buildNpm':'build-npm','genExports':'gen-exports','modules':'modules','generatedTests':'generated-tests','nodeModules':'node_modules','next':'.next','nodeCache':'.node_cache','nx':'.nx','vscode':'.vscode','git':'.git','playwrightReport':'playwright-report','testResults':'test-results','rollup':'rollup','replaceAliases':'replace-aliases','pages':'pages','deploy':'deploy','level2':'level2','monorepo':'monorepo','content':'content','components':'components','app':'app','framework':'framework','api':'api','ci':'ci','jobs':'jobs','web':'web','cliPackage':'cli-package','createSaasKitApp':'create','setup':'setup','husky':'.husky','constants':'constants','configs':'configs','internal':'internal','undocumented':'undocumented'};const files={'route':'route.ts','metaJson':'meta.json','schema':'schema.ts','schemaDts':'schema.d.ts','schemaJs':'schema.js','crudHandlerMap':'crud-handler-map.ts','tsconfig':'tsconfig.json','tsconfigBase':'tsconfig.base.json','tsconfigResources':'tsconfig.resources.json','tsconfigLint':'tsconfig.lint.json','tsconfigCli':'tsconfig.cli.json','tsconfigServer':'tsconfig.server.json','tailwindConfig':'tailwind.config.ts','packageJson':'package.json','env':'.env','envExample':'.env.example','envStaging':'.env.staging','npmConfig':'.npmrc','nextEnv':'next-env.d.ts','license':'LICENSE','pnpmLock':'pnpm-lock.yaml','indexJs':'index.js','preCommitScript':'pre-commit-script.ts','preCommit':'pre-commit','commitMsg':'commit-msg','packageTemplate':'package-template.json','eslintConfigJs':'eslint.config.js','eslintConfigMjs':'eslint.config.mjs','layout':'layout.tsx','buildInitDb':'build-init-db.ts'};const projectPaths={'root':'/','src':folders['src'],'app':folders['src']+'/'+folders['app'],'apiV1':folders['src']+'/'+folders['app']+'/'+folders['api']+'/v1/(f)','lib':folders['lib'],'generated':folders['generated'],'srcComponents':folders['src']+'/'+folders['components'],'saasKitNodeModulesPath':folders['nodeModules']+'/'+packages.npmPackages['saasKit'],'f':folders['src']+'/'+folders['app']+'/f','public':folders['public'],'images':folders['public']+'/images','openApiJson':folders['public']+'/openapi.json','cliCreate':folders['packages']+'/'+folders['level2']+'/'+folders['cli']+'/'+folders['createSaasKitApp']};const nonRootProjectPaths={'currentDir':'./','currentDirRef':'.','parentDirRef':'..','clientFramework':folders['client']+'/'+folders['framework'],'serverFramework':folders['server']+'/'+folders['framework'],'apiHooks':folders['api']+'/hooks','npmCommands':folders['npmCommands'],'server':folders['server'],'serverContent':folders['server']+'/'+folders['content'],'package':folders['package'],'packageCli':folders['cliPackage'],'htmlTemplates':'html-templates','metaServer':folders['meta']+'/'+folders['server'],'toolsNpmCommands':folders['tools']+'/'+folders['npmCommands'],'tools':folders['tools'],'saasKitCliBin':folders['level2']+'/'+folders['cli']+'/'+folders['bin'],'buildPackage':folders['build']+'/'+folders['package'],'buildPackagesTypes':folders['build']+'/'+folders['package']+'/types','buildCliPackage':folders['build']+'/'+folders['cliPackage'],'buildPackagesTypesOutput':folders['build']+'/'+folders['package']+'/types-output','cliConstants':folders['cli']+'/'+folders['constants'],'cliConfigs':folders['cli']+'/'+folders['configs']};const serverWeb=folders['server']+'/'+folders['web'];const packagesPath={'packagesBaseRepo':folders['packages']+'/'+folders['baseRepo']+'/','packagesCli':folders['packages']+'/'+folders['level2']+'/'+folders['cli']+'/','packagesCommon':folders['packages']+'/'+folders['level2']+'/'+folders['common']+'/','packagesDocs':folders['packages']+'/'+folders['docs']+'/','packagesFdAppToolbox':folders['packages']+'/'+folders['level2']+'/'+folders['fdAppToolbox']+'/','packagesFdComponentToolbox':folders['packages']+'/'+folders['level2']+'/'+folders['fdComponentToolbox']+'/','packagesFdToolbox':folders['packages']+'/'+folders['fdToolbox']+'/','packagesFdToolboxCore':folders['packages']+'/'+folders['fdToolboxCore']+'/','packagesFlint':folders['packages']+'/'+folders['flint']+'/','packagesInfra':folders['packages']+'/'+folders['infra']+'/','packagesInternalCli':folders['packages']+'/'+folders['internalCli']+'/','packagesMeta':folders['packages']+'/'+folders['level2']+'/'+folders['meta']+'/','packagesNpmCommands':folders['packages']+'/'+folders['level2']+'/'+folders['npmCommands']+'/','packagesOther':folders['packages']+'/'+folders['level2']+'/'+folders['other']+'/','packagesServer':folders['packages']+'/'+folders['level2']+'/'+folders['server']+'/','packagesTest':folders['packages']+'/'+folders['test']+'/','packagesTools':folders['packages']+'/'+folders['level2']+'/'+folders['tools']+'/','packagesClient':folders['packages']+'/'+folders['level2']+'/'+folders['client']+'/','git':folders['packages']+'/'+folders['baseRepo']+'/'+folders['tools']+'/'+folders['git']+'/','buildNpm':folders['packages']+'/'+folders['level2']+'/'+folders['npmCommands']+'/'+folders['buildNpm']+'/','createSaasKitApp':folders['packages']+'/'+folders['level2']+'/'+folders['cli']+'/'+folders['createSaasKitApp']+'/','packagesEnricher':folders['packages']+'/'+folders['level2']+'/'+folders['enricher']+'/','packagesDocsContent':folders['packages']+'/'+folders['docs']+'/'+folders['content']+'/','apiResponses':folders['packages']+'/'+folders['level2']+'/'+folders['meta']+'/'+serverWeb+'/responses/','apiErrors':folders['packages']+'/'+folders['fdToolbox']+'/'+serverWeb+'/errors/'};const infraCiJobsBase=packagesPath['packagesInfra']+folders['ci']+'/'+folders['jobs'],infraCiSetupBase=packagesPath['packagesInfra']+folders['ci']+'/'+folders['setup'];const generatedPaths={'metaJson':folders['generated']+'/'+files['metaJson'],'tsconfigResources':folders['generated']+'/'+files['tsconfigResources'],'schema':folders['generated']+'/'+files['schema'],'schemaDts':folders['generated']+'/'+files['schemaDts'],'schemaJs':folders['generated']+'/'+files['schemaJs'],'crudHandlerMap':folders['generated']+'/'+files['crudHandlerMap']};const clientPaths={'styles':''+(packagesPath['packagesClient']+'styles'),'components':''+(packagesPath['packagesClient']+folders['components']),'pages':''+(packagesPath['packagesClient']+folders['pages']),'payments':''+(packagesPath['packagesClient']+'payments'),'products':''+(packagesPath['packagesClient']+'products'),'websiteScan':''+(packagesPath['packagesClient']+'website-scan')};const infraPaths={'lintJob':aliasSymbols.aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/lint','buildAndTestJob':aliasSymbols.aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/build-and-test','saasKitTestBuildAndTestJob':aliasSymbols.aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/saas-kit-test-build-and-test','createSaasKitAppTestJob':aliasSymbols.aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/create-saas-kit-app-test','manualCleanupJob':aliasSymbols.aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/manual-cleanup','cleanupScript':aliasSymbols.aliases['infra']+'/'+folders['ci']+'/'+folders['setup']+'/cleanup','setupScript':aliasSymbols.aliases['infra']+'/'+folders['ci']+'/'+folders['setup']+'/setup'};const globPatterns={'tsTsx':'**/*.{ts,tsx}','jsTsJsxTsx':'**/*.{js,ts,jsx,tsx}'};
|
|
8
8
|
|
|
9
9
|
exports.clientPaths = clientPaths;
|
|
10
10
|
exports.files = files;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
import { aliases } from './alias-symbols.js';
|
|
3
3
|
import { npmPackages } from '../constants/packages2.js';
|
|
4
4
|
|
|
5
|
-
const folders={'src':'src','baseRepo':'base-repo','cli':'cli','common':'common','docs':'docs','enricher':'enricher','fdAppToolbox':'fd-app-toolbox','fdComponentToolbox':'fd-component-toolbox','fdToolbox':'fd-toolbox','fdToolboxCore':'fd-toolbox-core','flint':'flint','infra':'infra','internalCli':'internal-cli','meta':'meta','npmCommands':'npm-commands','other':'other','server':'server','test':'test','tools':'tools','client':'client','generated':'generated','dist':'dist','lib':'lib','packages':'packages','package':'package','public':'public','build':'build','bin':'bin','buildNpm':'build-npm','genExports':'gen-exports','modules':'modules','generatedTests':'generated-tests','nodeModules':'node_modules','next':'.next','nodeCache':'.node_cache','nx':'.nx','vscode':'.vscode','git':'.git','playwrightReport':'playwright-report','testResults':'test-results','rollup':'rollup','replaceAliases':'replace-aliases','pages':'pages','deploy':'deploy','level2':'level2','monorepo':'monorepo','content':'content','components':'components','app':'app','framework':'framework','api':'api','ci':'ci','jobs':'jobs','web':'web','cliPackage':'cli-package','createSaasKitApp':'create','setup':'setup','husky':'.husky','constants':'constants','configs':'configs'};const files={'route':'route.ts','metaJson':'meta.json','schema':'schema.ts','schemaDts':'schema.d.ts','schemaJs':'schema.js','crudHandlerMap':'crud-handler-map.ts','tsconfig':'tsconfig.json','tsconfigBase':'tsconfig.base.json','tsconfigResources':'tsconfig.resources.json','tsconfigLint':'tsconfig.lint.json','tsconfigCli':'tsconfig.cli.json','tsconfigServer':'tsconfig.server.json','tailwindConfig':'tailwind.config.ts','packageJson':'package.json','env':'.env','envExample':'.env.example','npmConfig':'.npmrc','nextEnv':'next-env.d.ts','license':'LICENSE','pnpmLock':'pnpm-lock.yaml','indexJs':'index.js','preCommitScript':'pre-commit-script.ts','preCommit':'pre-commit','commitMsg':'commit-msg','packageTemplate':'package-template.json','eslintConfigJs':'eslint.config.js','eslintConfigMjs':'eslint.config.mjs','layout':'layout.tsx'};const projectPaths={'root':'/','src':folders['src'],'app':folders['src']+'/'+folders['app'],'apiV1':folders['src']+'/'+folders['app']+'/'+folders['api']+'/
|
|
5
|
+
const folders={'src':'src','baseRepo':'base-repo','cli':'cli','common':'common','docs':'docs','enricher':'enricher','fdAppToolbox':'fd-app-toolbox','fdComponentToolbox':'fd-component-toolbox','fdToolbox':'fd-toolbox','fdToolboxCore':'fd-toolbox-core','flint':'flint','infra':'infra','internalCli':'internal-cli','meta':'meta','npmCommands':'npm-commands','other':'other','server':'server','test':'test','tools':'tools','client':'client','generated':'generated','dist':'dist','lib':'lib','packages':'packages','package':'package','public':'public','build':'build','bin':'bin','buildNpm':'build-npm','genExports':'gen-exports','modules':'modules','generatedTests':'generated-tests','nodeModules':'node_modules','next':'.next','nodeCache':'.node_cache','nx':'.nx','vscode':'.vscode','git':'.git','playwrightReport':'playwright-report','testResults':'test-results','rollup':'rollup','replaceAliases':'replace-aliases','pages':'pages','deploy':'deploy','level2':'level2','monorepo':'monorepo','content':'content','components':'components','app':'app','framework':'framework','api':'api','ci':'ci','jobs':'jobs','web':'web','cliPackage':'cli-package','createSaasKitApp':'create','setup':'setup','husky':'.husky','constants':'constants','configs':'configs','internal':'internal','undocumented':'undocumented'};const files={'route':'route.ts','metaJson':'meta.json','schema':'schema.ts','schemaDts':'schema.d.ts','schemaJs':'schema.js','crudHandlerMap':'crud-handler-map.ts','tsconfig':'tsconfig.json','tsconfigBase':'tsconfig.base.json','tsconfigResources':'tsconfig.resources.json','tsconfigLint':'tsconfig.lint.json','tsconfigCli':'tsconfig.cli.json','tsconfigServer':'tsconfig.server.json','tailwindConfig':'tailwind.config.ts','packageJson':'package.json','env':'.env','envExample':'.env.example','envStaging':'.env.staging','npmConfig':'.npmrc','nextEnv':'next-env.d.ts','license':'LICENSE','pnpmLock':'pnpm-lock.yaml','indexJs':'index.js','preCommitScript':'pre-commit-script.ts','preCommit':'pre-commit','commitMsg':'commit-msg','packageTemplate':'package-template.json','eslintConfigJs':'eslint.config.js','eslintConfigMjs':'eslint.config.mjs','layout':'layout.tsx','buildInitDb':'build-init-db.ts'};const projectPaths={'root':'/','src':folders['src'],'app':folders['src']+'/'+folders['app'],'apiV1':folders['src']+'/'+folders['app']+'/'+folders['api']+'/v1/(f)','lib':folders['lib'],'generated':folders['generated'],'srcComponents':folders['src']+'/'+folders['components'],'saasKitNodeModulesPath':folders['nodeModules']+'/'+npmPackages['saasKit'],'f':folders['src']+'/'+folders['app']+'/f','public':folders['public'],'images':folders['public']+'/images','openApiJson':folders['public']+'/openapi.json','cliCreate':folders['packages']+'/'+folders['level2']+'/'+folders['cli']+'/'+folders['createSaasKitApp']};const nonRootProjectPaths={'currentDir':'./','currentDirRef':'.','parentDirRef':'..','clientFramework':folders['client']+'/'+folders['framework'],'serverFramework':folders['server']+'/'+folders['framework'],'apiHooks':folders['api']+'/hooks','npmCommands':folders['npmCommands'],'server':folders['server'],'serverContent':folders['server']+'/'+folders['content'],'package':folders['package'],'packageCli':folders['cliPackage'],'htmlTemplates':'html-templates','metaServer':folders['meta']+'/'+folders['server'],'toolsNpmCommands':folders['tools']+'/'+folders['npmCommands'],'tools':folders['tools'],'saasKitCliBin':folders['level2']+'/'+folders['cli']+'/'+folders['bin'],'buildPackage':folders['build']+'/'+folders['package'],'buildPackagesTypes':folders['build']+'/'+folders['package']+'/types','buildCliPackage':folders['build']+'/'+folders['cliPackage'],'buildPackagesTypesOutput':folders['build']+'/'+folders['package']+'/types-output','cliConstants':folders['cli']+'/'+folders['constants'],'cliConfigs':folders['cli']+'/'+folders['configs']};const serverWeb=folders['server']+'/'+folders['web'];const packagesPath={'packagesBaseRepo':folders['packages']+'/'+folders['baseRepo']+'/','packagesCli':folders['packages']+'/'+folders['level2']+'/'+folders['cli']+'/','packagesCommon':folders['packages']+'/'+folders['level2']+'/'+folders['common']+'/','packagesDocs':folders['packages']+'/'+folders['docs']+'/','packagesFdAppToolbox':folders['packages']+'/'+folders['level2']+'/'+folders['fdAppToolbox']+'/','packagesFdComponentToolbox':folders['packages']+'/'+folders['level2']+'/'+folders['fdComponentToolbox']+'/','packagesFdToolbox':folders['packages']+'/'+folders['fdToolbox']+'/','packagesFdToolboxCore':folders['packages']+'/'+folders['fdToolboxCore']+'/','packagesFlint':folders['packages']+'/'+folders['flint']+'/','packagesInfra':folders['packages']+'/'+folders['infra']+'/','packagesInternalCli':folders['packages']+'/'+folders['internalCli']+'/','packagesMeta':folders['packages']+'/'+folders['level2']+'/'+folders['meta']+'/','packagesNpmCommands':folders['packages']+'/'+folders['level2']+'/'+folders['npmCommands']+'/','packagesOther':folders['packages']+'/'+folders['level2']+'/'+folders['other']+'/','packagesServer':folders['packages']+'/'+folders['level2']+'/'+folders['server']+'/','packagesTest':folders['packages']+'/'+folders['test']+'/','packagesTools':folders['packages']+'/'+folders['level2']+'/'+folders['tools']+'/','packagesClient':folders['packages']+'/'+folders['level2']+'/'+folders['client']+'/','git':folders['packages']+'/'+folders['baseRepo']+'/'+folders['tools']+'/'+folders['git']+'/','buildNpm':folders['packages']+'/'+folders['level2']+'/'+folders['npmCommands']+'/'+folders['buildNpm']+'/','createSaasKitApp':folders['packages']+'/'+folders['level2']+'/'+folders['cli']+'/'+folders['createSaasKitApp']+'/','packagesEnricher':folders['packages']+'/'+folders['level2']+'/'+folders['enricher']+'/','packagesDocsContent':folders['packages']+'/'+folders['docs']+'/'+folders['content']+'/','apiResponses':folders['packages']+'/'+folders['level2']+'/'+folders['meta']+'/'+serverWeb+'/responses/','apiErrors':folders['packages']+'/'+folders['fdToolbox']+'/'+serverWeb+'/errors/'};const infraCiJobsBase=packagesPath['packagesInfra']+folders['ci']+'/'+folders['jobs'],infraCiSetupBase=packagesPath['packagesInfra']+folders['ci']+'/'+folders['setup'];const generatedPaths={'metaJson':folders['generated']+'/'+files['metaJson'],'tsconfigResources':folders['generated']+'/'+files['tsconfigResources'],'schema':folders['generated']+'/'+files['schema'],'schemaDts':folders['generated']+'/'+files['schemaDts'],'schemaJs':folders['generated']+'/'+files['schemaJs'],'crudHandlerMap':folders['generated']+'/'+files['crudHandlerMap']};const clientPaths={'styles':''+(packagesPath['packagesClient']+'styles'),'components':''+(packagesPath['packagesClient']+folders['components']),'pages':''+(packagesPath['packagesClient']+folders['pages']),'payments':''+(packagesPath['packagesClient']+'payments'),'products':''+(packagesPath['packagesClient']+'products'),'websiteScan':''+(packagesPath['packagesClient']+'website-scan')};const infraPaths={'lintJob':aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/lint','buildAndTestJob':aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/build-and-test','saasKitTestBuildAndTestJob':aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/saas-kit-test-build-and-test','createSaasKitAppTestJob':aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/create-saas-kit-app-test','manualCleanupJob':aliases['infra']+'/'+folders['ci']+'/'+folders['jobs']+'/manual-cleanup','cleanupScript':aliases['infra']+'/'+folders['ci']+'/'+folders['setup']+'/cleanup','setupScript':aliases['infra']+'/'+folders['ci']+'/'+folders['setup']+'/setup'};const globPatterns={'tsTsx':'**/*.{ts,tsx}','jsTsJsxTsx':'**/*.{js,ts,jsx,tsx}'};
|
|
6
6
|
|
|
7
7
|
export { clientPaths, files, folders, generatedPaths, globPatterns, infraPaths, nonRootProjectPaths, packagesPath, projectPaths };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
var projectPaths = require('../app-constants/project-paths.cjs.js');
|
|
5
5
|
|
|
6
|
-
const additionalFoldersToCreate=[
|
|
6
|
+
const additionalFoldersToCreate=[];const toolsFoldersToReplace={[projectPaths.nonRootProjectPaths['toolsNpmCommands']]:{[projectPaths.nonRootProjectPaths['tools']]:''}};
|
|
7
7
|
|
|
8
8
|
exports.additionalFoldersToCreate = additionalFoldersToCreate;
|
|
9
9
|
exports.toolsFoldersToReplace = toolsFoldersToReplace;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
import {
|
|
2
|
+
import { nonRootProjectPaths } from '../app-constants/project-paths.js';
|
|
3
3
|
|
|
4
|
-
const additionalFoldersToCreate=[
|
|
4
|
+
const additionalFoldersToCreate=[];const toolsFoldersToReplace={[nonRootProjectPaths['toolsNpmCommands']]:{[nonRootProjectPaths['tools']]:''}};
|
|
5
5
|
|
|
6
6
|
export { additionalFoldersToCreate, toolsFoldersToReplace };
|
package/cli/bin/create.ts
CHANGED
|
@@ -56,15 +56,15 @@ const filename = fileURLToPath(import.meta.url);
|
|
|
56
56
|
const sourceDir = "../../../../";
|
|
57
57
|
const binDir = path.dirname(filename);
|
|
58
58
|
const repoRoot = path.resolve(binDir, sourceDir);
|
|
59
|
-
const envLocalPath: string = path.join(binDir, `${sourceDir
|
|
59
|
+
const envLocalPath: string = path.join(binDir, `${sourceDir + folders.cli}/${files.envExample}`);
|
|
60
60
|
const envTemplate: string = fs.readFileSync(envLocalPath, "utf8");
|
|
61
61
|
|
|
62
62
|
const foldersToIgnore: string[] = [
|
|
63
|
-
`${folders.cli}
|
|
64
|
-
`${folders.cli}
|
|
65
|
-
`${folders.cli}
|
|
66
|
-
`${folders.cli}
|
|
67
|
-
`${folders.cli}
|
|
63
|
+
`${folders.cli}/${folders.constants}`,
|
|
64
|
+
`${folders.cli}/${files.packageTemplate}`,
|
|
65
|
+
`${folders.cli}/${files.envExample}`,
|
|
66
|
+
`${folders.cli}/${folders.bin}`,
|
|
67
|
+
`${folders.cli}/${folders.configs}`,
|
|
68
68
|
];
|
|
69
69
|
|
|
70
70
|
function runCommand(command: string, cwd?: string) {
|
|
@@ -115,11 +115,19 @@ function createNextProject(projectTitle: string, targetDir: string) {
|
|
|
115
115
|
logInfoRaw("Next.js project created!");
|
|
116
116
|
|
|
117
117
|
const tsConfigPath = path.join(targetDir, "next.config.ts");
|
|
118
|
+
const publicDir = path.join(targetDir, folders.public);
|
|
118
119
|
|
|
119
120
|
if (fs.existsSync(tsConfigPath)) {
|
|
120
121
|
fs.rmSync(tsConfigPath);
|
|
121
122
|
logInfoRaw("Removed default next.config.ts");
|
|
122
123
|
}
|
|
124
|
+
|
|
125
|
+
if (fs.existsSync(publicDir)) {
|
|
126
|
+
fs.rmSync(publicDir, { recursive: true, force: true });
|
|
127
|
+
logInfoRaw("Removed default public folder");
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
fs.mkdirSync(publicDir);
|
|
123
131
|
}
|
|
124
132
|
|
|
125
133
|
async function createEnvFile(targetDir: string) {
|
|
@@ -141,7 +149,7 @@ async function createEnvFile(targetDir: string) {
|
|
|
141
149
|
async function overridePackageJson(targetDir: string) {
|
|
142
150
|
const targetPackageJsonPath: string = path.join(targetDir, files.packageJson);
|
|
143
151
|
// "name" is omitted in package.json; renamed to package-template.json so NX ignores it as a project.
|
|
144
|
-
const cliPackageJsonPath: string = path.join(repoRoot, `${folders.cli}
|
|
152
|
+
const cliPackageJsonPath: string = path.join(repoRoot, `${folders.cli}/${files.packageTemplate}`);
|
|
145
153
|
|
|
146
154
|
try {
|
|
147
155
|
const targetPackageJson: PackageJson = JSON.parse(
|
|
@@ -205,10 +213,11 @@ async function copyProjectFiles(targetDir: string) {
|
|
|
205
213
|
logInfoRaw(`Copying ${projectName} files...`);
|
|
206
214
|
|
|
207
215
|
for (const file of allFilesToCopy) {
|
|
208
|
-
const
|
|
216
|
+
const normalizedFile = file.replace(/\[(.)\]/g, "$1");
|
|
217
|
+
const cliFile = `${folders.cli}/${normalizedFile}`;
|
|
209
218
|
const srcPath: string = path.join(repoRoot, cliFile);
|
|
210
219
|
|
|
211
|
-
const processedFile = replaceToolsFolder(
|
|
220
|
+
const processedFile = replaceToolsFolder(normalizedFile);
|
|
212
221
|
|
|
213
222
|
const destPath: string = path.join(targetDir, processedFile);
|
|
214
223
|
|
|
@@ -376,7 +385,7 @@ async function enableRepoModeExtras(targetDir: string) {
|
|
|
376
385
|
}
|
|
377
386
|
|
|
378
387
|
async function updateLayoutTitle(targetDir: string, folderName: string) {
|
|
379
|
-
const layoutPath = path.join(targetDir, `${projectPaths.app}
|
|
388
|
+
const layoutPath = path.join(targetDir, `${projectPaths.app}/${files.layout}`);
|
|
380
389
|
|
|
381
390
|
if (!existsSync(layoutPath)) {
|
|
382
391
|
throw createError(`${files.layout} not found at ${layoutPath}, cannot update title.`);
|
|
@@ -5,6 +5,7 @@ import { metaEnvSettingKeys } from "@meta/infra/meta-env-setting-keys";
|
|
|
5
5
|
|
|
6
6
|
const connectionString = getRequiredStringEnvSetting(metaEnvSettingKeys.databaseConnection);
|
|
7
7
|
|
|
8
|
+
/** To do: add docs */
|
|
8
9
|
export const drizzleConfig = defineConfig({
|
|
9
10
|
dialect: "postgresql",
|
|
10
11
|
schema: generatedPaths.schema,
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { folders } from "@base-repo/app-constants/project-paths";
|
|
2
|
+
import type { Configuration as WebpackConfig } from "webpack";
|
|
3
|
+
|
|
4
|
+
const externalModules = {
|
|
5
|
+
"@node-rs/argon2": "commonjs @node-rs/argon2",
|
|
6
|
+
"cloudflare:sockets": "commonjs cloudflare:sockets",
|
|
7
|
+
"node:crypto": "commonjs node:crypto",
|
|
8
|
+
"node:fs": "commonjs node:fs",
|
|
9
|
+
"node:path": "commonjs node:path",
|
|
10
|
+
"node:stream": "commonjs node:stream",
|
|
11
|
+
child_process: "commonjs2 child_process",
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const serverRules = {
|
|
15
|
+
test: /\.html$/,
|
|
16
|
+
use: "raw-loader",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const mdRules = {
|
|
20
|
+
test: /\.md$/,
|
|
21
|
+
use: "ignore-loader",
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/** To do: add docs */
|
|
25
|
+
export const nextConfig = (overrides = {}) => {
|
|
26
|
+
const baseConfig = {
|
|
27
|
+
reactCompiler: true,
|
|
28
|
+
images: {
|
|
29
|
+
remotePatterns: [
|
|
30
|
+
{
|
|
31
|
+
protocol: "https",
|
|
32
|
+
hostname: "pub-7a5f8c3ab46946ae96d8d2e497a36f7b.r2.dev",
|
|
33
|
+
port: "",
|
|
34
|
+
pathname: "/**",
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
webpack: (
|
|
39
|
+
config: WebpackConfig & {
|
|
40
|
+
resolve: { alias: Record<string, false> };
|
|
41
|
+
module: { rules: unknown[] };
|
|
42
|
+
externals: unknown[];
|
|
43
|
+
watchOptions?: { ignored: string[] };
|
|
44
|
+
},
|
|
45
|
+
{ isServer }: { isServer: boolean },
|
|
46
|
+
) => {
|
|
47
|
+
if (isServer) {
|
|
48
|
+
config.watchOptions = {
|
|
49
|
+
ignored: [
|
|
50
|
+
`**/${folders.nodeModules}/**`,
|
|
51
|
+
`**/${folders.next}/**`,
|
|
52
|
+
`**/${folders.npmCommands}/**`,
|
|
53
|
+
],
|
|
54
|
+
};
|
|
55
|
+
config.externals.push(externalModules);
|
|
56
|
+
config.module.rules.push(serverRules);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
config.module.rules.push(mdRules);
|
|
60
|
+
|
|
61
|
+
return config;
|
|
62
|
+
},
|
|
63
|
+
async rewrites() {
|
|
64
|
+
return [
|
|
65
|
+
{
|
|
66
|
+
source: "/api/:path*",
|
|
67
|
+
destination: "/api/v1/:path*",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
source: "/:path((?!api).*)",
|
|
71
|
+
destination: "/f/:path*",
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
},
|
|
75
|
+
serverExternalPackages: ["oslo", "pg"],
|
|
76
|
+
};
|
|
77
|
+
return { ...baseConfig, ...overrides };
|
|
78
|
+
};
|
package/cli/next.config.js
CHANGED
|
@@ -1,73 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { folders } from "@fernir2/saas-kit";
|
|
1
|
+
import { nextConfig } from "@fernir2/saas-kit";
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
"@node-rs/argon2": "commonjs @node-rs/argon2",
|
|
6
|
-
"cloudflare:sockets": "commonjs cloudflare:sockets",
|
|
7
|
-
"node:crypto": "commonjs node:crypto",
|
|
8
|
-
"node:fs": "commonjs node:fs",
|
|
9
|
-
"node:path": "commonjs node:path",
|
|
10
|
-
"node:stream": "commonjs node:stream",
|
|
11
|
-
child_process: "commonjs2 child_process",
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const serverRules = {
|
|
15
|
-
test: /\.html$/,
|
|
16
|
-
use: "raw-loader",
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
const mdRules = {
|
|
20
|
-
test: /\.md$/,
|
|
21
|
-
use: "ignore-loader",
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const nextConfig = async () => {
|
|
25
|
-
return {
|
|
26
|
-
reactCompiler: true,
|
|
27
|
-
images: {
|
|
28
|
-
remotePatterns: [
|
|
29
|
-
{
|
|
30
|
-
protocol: "https",
|
|
31
|
-
hostname: "pub-7a5f8c3ab46946ae96d8d2e497a36f7b.r2.dev",
|
|
32
|
-
port: "",
|
|
33
|
-
pathname: "/**",
|
|
34
|
-
},
|
|
35
|
-
],
|
|
36
|
-
},
|
|
37
|
-
webpack: (config, { isServer }) => {
|
|
38
|
-
if (isServer) {
|
|
39
|
-
config.watchOptions = {
|
|
40
|
-
ignored: [
|
|
41
|
-
`**/${folders.nodeModules}/**`,
|
|
42
|
-
`**/${folders.next}/**`,
|
|
43
|
-
`**/${folders.npmCommands}/**`,
|
|
44
|
-
`**/${folders.docs}/**`,
|
|
45
|
-
`**/${folders.flint}/**`,
|
|
46
|
-
],
|
|
47
|
-
};
|
|
48
|
-
config.externals.push(externalModules);
|
|
49
|
-
config.module.rules.push(serverRules);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
config.module.rules.push(mdRules);
|
|
53
|
-
|
|
54
|
-
config.resolve.alias["./packages/flint/*"] = false;
|
|
55
|
-
|
|
56
|
-
return config;
|
|
57
|
-
},
|
|
58
|
-
async rewrites() {
|
|
59
|
-
return [
|
|
60
|
-
{
|
|
61
|
-
source: "/api/:path*",
|
|
62
|
-
destination: "/api/v1/:path*",
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
source: "/:path((?!api).*)",
|
|
66
|
-
destination: "/f/:path*",
|
|
67
|
-
},
|
|
68
|
-
];
|
|
69
|
-
},
|
|
70
|
-
serverExternalPackages: ["oslo", "pg"],
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
export default nextConfig;
|
|
3
|
+
export default nextConfig();
|
|
@@ -19,9 +19,6 @@
|
|
|
19
19
|
"@fernir2/saas-kit": "0.0.162",
|
|
20
20
|
"@node-rs/argon2": "2.0.2",
|
|
21
21
|
"drizzle-orm": "0.36.4",
|
|
22
|
-
"eslint-plugin-github": "6.0.0",
|
|
23
|
-
"eslint-plugin-import": "2.32.0",
|
|
24
|
-
"eslint-plugin-sonarjs": "3.0.5",
|
|
25
22
|
"geist": "1.4.2",
|
|
26
23
|
"next": "16.0.10",
|
|
27
24
|
"quill": "2.0.3",
|
|
@@ -47,6 +44,9 @@
|
|
|
47
44
|
"eslint-plugin-react-compiler": "19.1.0-rc.2",
|
|
48
45
|
"eslint-plugin-react-hooks": "5.2.0",
|
|
49
46
|
"eslint-plugin-react-refresh": "0.4.20",
|
|
47
|
+
"eslint-plugin-github": "6.0.0",
|
|
48
|
+
"eslint-plugin-import": "2.32.0",
|
|
49
|
+
"eslint-plugin-sonarjs": "3.0.5",
|
|
50
50
|
"husky": "9.1.7",
|
|
51
51
|
"postcss": "8.5.6",
|
|
52
52
|
"prettier": "3.6.2",
|
|
@@ -55,7 +55,6 @@
|
|
|
55
55
|
"@tailwindcss/postcss": "4.1.16",
|
|
56
56
|
"tsx": "4.20.5",
|
|
57
57
|
"typescript": "5.9.2",
|
|
58
|
-
"esbuild": "0.25.9",
|
|
59
58
|
"babel-plugin-react-compiler": "1.0.0"
|
|
60
59
|
}
|
|
61
60
|
}
|
package/cli/server.ts
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import { envSettingKeys, getNumberEnvSetting, isDev } from "@fernir2/saas-kit";
|
|
10
10
|
|
|
11
11
|
const dev = isDev();
|
|
12
|
-
const port = getNumberEnvSetting(envSettingKeys.
|
|
12
|
+
const port = getNumberEnvSetting(envSettingKeys.port) ?? 3000;
|
|
13
13
|
|
|
14
14
|
const app = next({ dev, port });
|
|
15
15
|
const nextRequestHandler = app.getRequestHandler();
|
|
@@ -20,8 +20,7 @@ async function run() {
|
|
|
20
20
|
const httpServer = createServer((req, res) => {
|
|
21
21
|
checkAndHandleWebSocketRequest(req, res);
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
nextRequestHandler(req, res, parsedUrl);
|
|
23
|
+
nextRequestHandler(req, res, parse(req.url!, true));
|
|
25
24
|
});
|
|
26
25
|
|
|
27
26
|
initSocket(httpServer);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
deleteResourceByIdRoute,
|
|
3
|
+
getResourceByIdRoute,
|
|
4
|
+
putResourceByIdRoute,
|
|
5
|
+
} from "@meta/server/basic-crud/crud-api";
|
|
6
|
+
|
|
7
|
+
export const GET = getResourceByIdRoute;
|
|
8
|
+
|
|
9
|
+
export const PUT = putResourceByIdRoute;
|
|
10
|
+
|
|
11
|
+
export const DELETE = deleteResourceByIdRoute;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
deleteResourceRoute,
|
|
3
|
+
getResourceRoute,
|
|
4
|
+
postResourceRoute,
|
|
5
|
+
putResourceRoute,
|
|
6
|
+
} from "@meta/server/basic-crud/crud-api";
|
|
7
|
+
|
|
8
|
+
export const PUT = putResourceRoute;
|
|
9
|
+
|
|
10
|
+
export const GET = getResourceRoute;
|
|
11
|
+
|
|
12
|
+
export const POST = postResourceRoute;
|
|
13
|
+
|
|
14
|
+
export const DELETE = deleteResourceRoute;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
otheruserIdGetRoute,
|
|
3
|
+
otheruserIdPostRoute,
|
|
4
|
+
otheruserIdPutRoute,
|
|
5
|
+
otheruserIdDeleteRoute,
|
|
6
|
+
} from "@server/otheruser/id/otheruser-id-api";
|
|
7
|
+
|
|
8
|
+
export const GET = otheruserIdGetRoute;
|
|
9
|
+
|
|
10
|
+
export const POST = otheruserIdPostRoute;
|
|
11
|
+
|
|
12
|
+
export const PUT = otheruserIdPutRoute;
|
|
13
|
+
|
|
14
|
+
export const DELETE = otheruserIdDeleteRoute;
|