[{"title":"( 84 个子文件 213KB ) nodejs-hapi-template:一个 Nodejs hapi 样板应用程序,具有对 Docker、Redis 缓存、数据库迁移和播种机、速率限制和分页端点的开箱即用支持-源码","children":[{"title":"nodejs-hapi-template-master","children":[{"title":"config","children":[{"title":"auth.js <span style='color:#111;'> 933B </span>","children":null,"spread":false},{"title":"server.js <span style='color:#111;'> 1.10KB </span>","children":null,"spread":false},{"title":"db.js <span style='color:#111;'> 347B </span>","children":null,"spread":false},{"title":"paths.js <span style='color:#111;'> 2.08KB </span>","children":null,"spread":false}],"spread":true},{"title":"index.js <span style='color:#111;'> 165B </span>","children":null,"spread":false},{"title":".env.local <span style='color:#111;'> 231B </span>","children":null,"spread":false},{"title":".babelrc.js <span style='color:#111;'> 179B </span>","children":null,"spread":false},{"title":"seeders","children":[{"title":"04_oauth_client_scopes.js <span style='color:#111;'> 520B </span>","children":null,"spread":false},{"title":"02_users.js <span style='color:#111;'> 583B </span>","children":null,"spread":false},{"title":"05_oauth_access_token.js <span style='color:#111;'> 1.38KB </span>","children":null,"spread":false},{"title":"03_oauth_client_resources.js <span style='color:#111;'> 532B </span>","children":null,"spread":false},{"title":"01_oauth_clients.js <span style='color:#111;'> 467B </span>","children":null,"spread":false}],"spread":true},{"title":"package.json <span style='color:#111;'> 4.15KB </span>","children":null,"spread":false},{"title":"nodejs_hapi_template_github.svg <span style='color:#111;'> 16.36KB </span>","children":null,"spread":false},{"title":".github","children":[{"title":"workflows","children":[{"title":"nodejs-hapi-template.yml <span style='color:#111;'> 723B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":".prettierrc <span style='color:#111;'> 126B </span>","children":null,"spread":false},{"title":"server.js <span style='color:#111;'> 5.29KB </span>","children":null,"spread":false},{"title":".env.development <span style='color:#111;'> 266B </span>","children":null,"spread":false},{"title":"Dockerfile <span style='color:#111;'> 148B </span>","children":null,"spread":false},{"title":"jest.config.js <span style='color:#111;'> 177B </span>","children":null,"spread":false},{"title":".sequelizerc <span style='color:#111;'> 127B </span>","children":null,"spread":false},{"title":"resources","children":[{"title":"v1","children":[{"title":"03_oauth_access_tokens.sql <span style='color:#111;'> 645B </span>","children":null,"spread":false},{"title":"02_users.sql <span style='color:#111;'> 460B </span>","children":null,"spread":false},{"title":"05_oauth_client_scopes.sql <span style='color:#111;'> 463B </span>","children":null,"spread":false},{"title":"04_oauth_client_resources.sql <span style='color:#111;'> 623B </span>","children":null,"spread":false},{"title":"01_oauth_clients.sql <span style='color:#111;'> 411B </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"LICENSE <span style='color:#111;'> 1.06KB </span>","children":null,"spread":false},{"title":"migrate-and-run.sh <span style='color:#111;'> 454B </span>","children":null,"spread":false},{"title":"migrations","children":[{"title":"20191209182815-create-user.js <span style='color:#111;'> 188B </span>","children":null,"spread":false},{"title":"20200413132815-oauth.js <span style='color:#111;'> 188B </span>","children":null,"spread":false}],"spread":false},{"title":".eslintrc.js <span style='color:#111;'> 1.52KB </span>","children":null,"spread":false},{"title":"jest.setup.js <span style='color:#111;'> 785B </span>","children":null,"spread":false},{"title":"setup-local.sh <span style='color:#111;'> 216B </span>","children":null,"spread":false},{"title":"docker-compose.yml <span style='color:#111;'> 450B </span>","children":null,"spread":false},{"title":".gitignore <span style='color:#111;'> 1.37KB </span>","children":null,"spread":false},{"title":"lib","children":[{"title":"models","children":[{"title":"index.js <span style='color:#111;'> 924B </span>","children":null,"spread":false},{"title":"oauth_client_resources.js <span style='color:#111;'> 1.56KB </span>","children":null,"spread":false},{"title":"oauth_access_tokens.js <span style='color:#111;'> 1.83KB </span>","children":null,"spread":false},{"title":"users.js <span style='color:#111;'> 990B </span>","children":null,"spread":false},{"title":"oauth_client_scopes.js <span style='color:#111;'> 1.51KB </span>","children":null,"spread":false},{"title":"oauth_clients.js <span style='color:#111;'> 1.83KB </span>","children":null,"spread":false}],"spread":false},{"title":"testServer.js <span style='color:#111;'> 1.32KB </span>","children":null,"spread":false},{"title":"daos","children":[{"title":"oauthClientsDao.js <span style='color:#111;'> 3.32KB </span>","children":null,"spread":false},{"title":"oauthAccessTokensDao.js <span style='color:#111;'> 2.63KB </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"oauthClientResourcesDao.test.js <span style='color:#111;'> 6.24KB </span>","children":null,"spread":false},{"title":"oauthClientsDao.test.js <span style='color:#111;'> 8.20KB </span>","children":null,"spread":false},{"title":"oauthAccessTokensDao.test.js <span style='color:#111;'> 4.97KB </span>","children":null,"spread":false},{"title":"userDao.test.js <span style='color:#111;'> 3.30KB </span>","children":null,"spread":false},{"title":"oauthClientScopesDao.test.js <span style='color:#111;'> 5.31KB </span>","children":null,"spread":false}],"spread":false},{"title":"userDao.js <span style='color:#111;'> 614B </span>","children":null,"spread":false},{"title":"oauthClientScopesDao.js <span style='color:#111;'> 1.89KB </span>","children":null,"spread":false},{"title":"oauthClientResourcesDao.js <span style='color:#111;'> 4.33KB </span>","children":null,"spread":false}],"spread":false},{"title":"routes","children":[{"title":"routes.js <span style='color:#111;'> 327B </span>","children":null,"spread":false},{"title":"reset-cache","children":[{"title":"routes.js <span style='color:#111;'> 732B </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"routes.test.js <span style='color:#111;'> 2.32KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"tests","children":[{"title":"test.js <span style='color:#111;'> 336B </span>","children":null,"spread":false}],"spread":false},{"title":"oauth2","children":[{"title":"scopes","children":[{"title":"routes.js <span style='color:#111;'> 2.75KB </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"routes.test.js <span style='color:#111;'> 4.90KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"resources","children":[{"title":"routes.js <span style='color:#111;'> 4.32KB </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"routes.test.js <span style='color:#111;'> 6.81KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"tokens","children":[{"title":"routes.js <span style='color:#111;'> 1.95KB </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"routes.test.js <span style='color:#111;'> 2.99KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"clients","children":[{"title":"routes.js <span style='color:#111;'> 1.64KB </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"routes.test.js <span style='color:#111;'> 3.47KB </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":"users","children":[{"title":"routes.js <span style='color:#111;'> 2.00KB </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"routes.test.js <span style='color:#111;'> 2.91KB </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":".dockerignore <span style='color:#111;'> 12B </span>","children":null,"spread":false},{"title":"README.md <span style='color:#111;'> 4.54KB </span>","children":null,"spread":false},{"title":"yarn.lock <span style='color:#111;'> 388.13KB </span>","children":null,"spread":false},{"title":"utils","children":[{"title":"seedData.js <span style='color:#111;'> 228B </span>","children":null,"spread":false},{"title":"index.js <span style='color:#111;'> 5.01KB </span>","children":null,"spread":false},{"title":"mockData.js <span style='color:#111;'> 2.32KB </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"validateScopeForRoute.test.js <span style='color:#111;'> 2.91KB </span>","children":null,"spread":false},{"title":"index.test.js <span style='color:#111;'> 12.43KB </span>","children":null,"spread":false}],"spread":false},{"title":"testUtils.js <span style='color:#111;'> 2.57KB </span>","children":null,"spread":false},{"title":"transformerUtils.js <span style='color:#111;'> 728B </span>","children":null,"spread":false},{"title":"responseInterceptors.js <span style='color:#111;'> 359B </span>","children":null,"spread":false},{"title":"validationUtils.js <span style='color:#111;'> 1.65KB </span>","children":null,"spread":false},{"title":"configureEnv.js <span style='color:#111;'> 132B </span>","children":null,"spread":false},{"title":"migrateUtils.js <span style='color:#111;'> 1.37KB </span>","children":null,"spread":false},{"title":"cacheMethods.js <span style='color:#111;'> 275B </span>","children":null,"spread":false},{"title":"cacheConstants.js <span style='color:#111;'> 456B </span>","children":null,"spread":false},{"title":"paginationConstants.js <span style='color:#111;'> 912B </span>","children":null,"spread":false},{"title":"constants.js <span style='color:#111;'> 1.01KB </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true}]