UNPKG

dkershner6-projen-sst-nextjs-app

Version:

DKershner's preferred constructs for Projen SST Apps using Nextjs.

62 lines 8.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Node20SstNextjsApp = void 0; const clone_deep_1 = __importDefault(require("clone-deep")); const dkershner6_projen_react_1 = require("dkershner6-projen-react"); const dkershner6_projen_sst_app_1 = require("dkershner6-projen-sst-app"); const dkershner6_projen_typescript_1 = require("dkershner6-projen-typescript"); const javascript_1 = require("projen/lib/javascript"); const util_1 = require("projen/lib/util"); const projen_nextjs_1 = require("projen-nextjs"); class Node20SstNextjsApp extends dkershner6_projen_sst_app_1.Node20SstApp { nextjsTsconfig; constructor(options) { const defaultNextjsOptions = { tsconfigDev: (0, util_1.deepMerge)([ { fileName: "tsconfig.dev.json" }, options.tsconfig ?? {}, ]), }; const combinedOptions = (0, util_1.deepMerge)([ (0, clone_deep_1.default)(dkershner6_projen_react_1.RECOMMENDED_NODE_20_REACT_PROJECT_OPTIONS), defaultNextjsOptions, options, ]); super(combinedOptions); this.gitignore.exclude(".next", "out"); this.nextjsTsconfig = new javascript_1.TypescriptConfig(this, (0, util_1.deepMerge)([ (0, clone_deep_1.default)({ compilerOptions: { ...dkershner6_projen_typescript_1.PROJEN_COMPILER_OPTION_DEFAULTS, ...dkershner6_projen_typescript_1.RECOMMENDED_TSCONFIG_COMPILER_OPTIONS, downlevelIteration: true, }, }), projen_nextjs_1.NEXTJS_TSCONFIG_OPTIONS, { exclude: [ ...(projen_nextjs_1.NEXTJS_TSCONFIG_OPTIONS?.exclude ?? []), ...this.tsconfigDev.exclude, ], include: [ ...(projen_nextjs_1.NEXTJS_TSCONFIG_OPTIONS?.include ?? []), ...this.tsconfigDev.include, ], }, options?.nextjsTsconfig ?? {}, ])); new dkershner6_projen_react_1.Node20ReactTypescriptConfigurer(this, { projectType: "app", }); new projen_nextjs_1.NextjsEslint(this); if (options.nextjsJest ?? true) { new projen_nextjs_1.NextjsJestConfigFile(this, options.nextjsJestConfigFileOptions); } new projen_nextjs_1.NextjsTasks(this); } } exports.Node20SstNextjsApp = Node20SstNextjsApp; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNERBQW1DO0FBQ25DLHFFQUdpQztBQUNqQyx5RUFBOEU7QUFDOUUsK0VBR3NDO0FBQ3RDLHNEQUcrQjtBQUMvQiwwQ0FBNEM7QUFDNUMsaURBTXVCO0FBb0J2QixNQUFhLGtCQUFtQixTQUFRLHdDQUFZO0lBQ2hDLGNBQWMsQ0FBbUI7SUFFakQsWUFBWSxPQUFrQztRQUMxQyxNQUFNLG9CQUFvQixHQUd0QjtZQUNBLFdBQVcsRUFBRSxJQUFBLGdCQUFTLEVBQUM7Z0JBQ25CLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO2dCQUNqQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUU7YUFDekIsQ0FBNEI7U0FDaEMsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLElBQUEsZ0JBQVMsRUFBQztZQUM5QixJQUFBLG9CQUFTLEVBQUMsbUVBQXlDLENBQUM7WUFDcEQsb0JBQW9CO1lBQ3BCLE9BQU87U0FDVixDQUE4QixDQUFDO1FBRWhDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV2QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLDZCQUFnQixDQUN0QyxJQUFJLEVBQ0osSUFBQSxnQkFBUyxFQUFDO1lBQ04sSUFBQSxvQkFBUyxFQUFDO2dCQUNOLGVBQWUsRUFBRTtvQkFDYixHQUFHLDhEQUErQjtvQkFDbEMsR0FBRyxvRUFBcUM7b0JBQ3hDLGtCQUFrQixFQUFFLElBQUk7aUJBQzNCO2FBQ0osQ0FBQztZQUNGLHVDQUF1QjtZQUN2QjtnQkFDSSxPQUFPLEVBQUU7b0JBQ0wsR0FBRyxDQUFDLHVDQUF1QixFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQzNDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO2lCQUM5QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ0wsR0FBRyxDQUFDLHVDQUF1QixFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQzNDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO2lCQUM5QjthQUNKO1lBQ0QsT0FBTyxFQUFFLGNBQWMsSUFBSSxFQUFFO1NBQ2hDLENBQTRCLENBQ2hDLENBQUM7UUFFRixJQUFJLHlEQUErQixDQUFDLElBQUksRUFBRTtZQUN0QyxXQUFXLEVBQUUsS0FBSztTQUNyQixDQUFDLENBQUM7UUFDSCxJQUFJLDRCQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksb0NBQW9CLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLDJCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNKO0FBMURELGdEQTBEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcImNsb25lLWRlZXBcIjtcbmltcG9ydCB7XG4gICAgUkVDT01NRU5ERURfTk9ERV8yMF9SRUFDVF9QUk9KRUNUX09QVElPTlMsXG4gICAgTm9kZTIwUmVhY3RUeXBlc2NyaXB0Q29uZmlndXJlcixcbn0gZnJvbSBcImRrZXJzaG5lcjYtcHJvamVuLXJlYWN0XCI7XG5pbXBvcnQgeyBOb2RlMjBTc3RBcHAsIE5vZGUyMFNzdEFwcE9wdGlvbnMgfSBmcm9tIFwiZGtlcnNobmVyNi1wcm9qZW4tc3N0LWFwcFwiO1xuaW1wb3J0IHtcbiAgICBQUk9KRU5fQ09NUElMRVJfT1BUSU9OX0RFRkFVTFRTLFxuICAgIFJFQ09NTUVOREVEX1RTQ09ORklHX0NPTVBJTEVSX09QVElPTlMsXG59IGZyb20gXCJka2Vyc2huZXI2LXByb2plbi10eXBlc2NyaXB0XCI7XG5pbXBvcnQge1xuICAgIFR5cGVzY3JpcHRDb25maWcsXG4gICAgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMsXG59IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCJwcm9qZW4vbGliL3V0aWxcIjtcbmltcG9ydCB7XG4gICAgTkVYVEpTX1RTQ09ORklHX09QVElPTlMsXG4gICAgTmV4dGpzRXNsaW50LFxuICAgIE5leHRqc0plc3RDb25maWdGaWxlLFxuICAgIE5leHRqc0plc3RDb25maWdGaWxlT3B0aW9ucyxcbiAgICBOZXh0anNUYXNrcyxcbn0gZnJvbSBcInByb2plbi1uZXh0anNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOb2RlMjBTc3ROZXh0anNBcHBPcHRpb25zIGV4dGVuZHMgTm9kZTIwU3N0QXBwT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50IG5leHQvamVzdCBvbiB0aGUgcHJvamVjdCdzIGplc3RDb25maWcuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgbmV4dGpzSmVzdD86IGJvb2xlYW47XG5cbiAgICBuZXh0anNKZXN0Q29uZmlnRmlsZU9wdGlvbnM/OiBOZXh0anNKZXN0Q29uZmlnRmlsZU9wdGlvbnM7XG5cbiAgICAvKipcbiAgICAgKiBBIGN1c3RvbSB0c2NvbmZpZyBmb3IgbmV4dGpzIGRldmVsb3BtZW50LCBzZXBhcmF0ZSBmcm9tIFByb2plbidzIHRzY29uZmlnLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBSZWNvbW1lbmRlZCB0c2NvbmZpZyBmb3IgTmV4dC5qcyBkZXZlbG9wbWVudCBieSBWZXJjZWwuXG4gICAgICovXG4gICAgbmV4dGpzVHNjb25maWc/OiBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIE5vZGUyMFNzdE5leHRqc0FwcCBleHRlbmRzIE5vZGUyMFNzdEFwcCB7XG4gICAgcHVibGljIHJlYWRvbmx5IG5leHRqc1RzY29uZmlnOiBUeXBlc2NyaXB0Q29uZmlnO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogTm9kZTIwU3N0TmV4dGpzQXBwT3B0aW9ucykge1xuICAgICAgICBjb25zdCBkZWZhdWx0TmV4dGpzT3B0aW9uczogT21pdDxcbiAgICAgICAgICAgIE5vZGUyMFNzdE5leHRqc0FwcE9wdGlvbnMsXG4gICAgICAgICAgICBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCIgfCBcImNka1ZlcnNpb25cIiB8IFwibmFtZVwiXG4gICAgICAgID4gPSB7XG4gICAgICAgICAgICB0c2NvbmZpZ0RldjogZGVlcE1lcmdlKFtcbiAgICAgICAgICAgICAgICB7IGZpbGVOYW1lOiBcInRzY29uZmlnLmRldi5qc29uXCIgfSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLnRzY29uZmlnID8/IHt9LFxuICAgICAgICAgICAgXSkgYXMgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29tYmluZWRPcHRpb25zID0gZGVlcE1lcmdlKFtcbiAgICAgICAgICAgIGRlZXBDbG9uZShSRUNPTU1FTkRFRF9OT0RFXzIwX1JFQUNUX1BST0pFQ1RfT1BUSU9OUyksXG4gICAgICAgICAgICBkZWZhdWx0TmV4dGpzT3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIF0pIGFzIE5vZGUyMFNzdE5leHRqc0FwcE9wdGlvbnM7XG5cbiAgICAgICAgc3VwZXIoY29tYmluZWRPcHRpb25zKTtcblxuICAgICAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKFwiLm5leHRcIiwgXCJvdXRcIik7XG5cbiAgICAgICAgdGhpcy5uZXh0anNUc2NvbmZpZyA9IG5ldyBUeXBlc2NyaXB0Q29uZmlnKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGRlZXBNZXJnZShbXG4gICAgICAgICAgICAgICAgZGVlcENsb25lKHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5QUk9KRU5fQ09NUElMRVJfT1BUSU9OX0RFRkFVTFRTLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uUkVDT01NRU5ERURfVFNDT05GSUdfQ09NUElMRVJfT1BUSU9OUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sZXZlbEl0ZXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBORVhUSlNfVFNDT05GSUdfT1BUSU9OUyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLihORVhUSlNfVFNDT05GSUdfT1BUSU9OUz8uZXhjbHVkZSA/PyBbXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnRzY29uZmlnRGV2LmV4Y2x1ZGUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGU6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLihORVhUSlNfVFNDT05GSUdfT1BUSU9OUz8uaW5jbHVkZSA/PyBbXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnRzY29uZmlnRGV2LmluY2x1ZGUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcHRpb25zPy5uZXh0anNUc2NvbmZpZyA/PyB7fSxcbiAgICAgICAgICAgIF0pIGFzIFR5cGVzY3JpcHRDb25maWdPcHRpb25zLFxuICAgICAgICApO1xuXG4gICAgICAgIG5ldyBOb2RlMjBSZWFjdFR5cGVzY3JpcHRDb25maWd1cmVyKHRoaXMsIHtcbiAgICAgICAgICAgIHByb2plY3RUeXBlOiBcImFwcFwiLFxuICAgICAgICB9KTtcbiAgICAgICAgbmV3IE5leHRqc0VzbGludCh0aGlzKTtcbiAgICAgICAgaWYgKG9wdGlvbnMubmV4dGpzSmVzdCA/PyB0cnVlKSB7XG4gICAgICAgICAgICBuZXcgTmV4dGpzSmVzdENvbmZpZ0ZpbGUodGhpcywgb3B0aW9ucy5uZXh0anNKZXN0Q29uZmlnRmlsZU9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIG5ldyBOZXh0anNUYXNrcyh0aGlzKTtcbiAgICB9XG59XG4iXX0=