@fraym/deployments 0.31.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Becklyn Studios
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # deployments
2
+
3
+ Client implementation in JavaScript for the Freym service [deployments](https://github.com/fraym/deployments).
4
+
5
+ ## Docs
6
+
7
+ Please have a look at our [documentation](https://docs.freym.becklyn.app/docs/services/deployments/introduction).
8
+
9
+ ## License
10
+
11
+ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,8 @@
1
+ import { ClientConfig } from "@/config/config";
2
+ import { Deployment, DeploymentResponse } from "@/schema/data";
3
+ export declare const createDeployment: (deployment: Deployment, config: ClientConfig) => Promise<DeploymentResponse>;
4
+ export type DeploymentStatus = Record<string, number>;
5
+ export declare const getDeploymentStatus: (deploymentId: number, config: ClientConfig) => Promise<DeploymentStatus>;
6
+ export declare const confirmDeployment: (deploymentId: number, config: ClientConfig) => Promise<void>;
7
+ export declare const rollbackDeployment: (deploymentId: number, config: ClientConfig) => Promise<void>;
8
+ export declare const rollbackDeploymentByNamespace: (config: ClientConfig) => Promise<void>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{confirmDeployment:function(){return confirmDeployment},createDeployment:function(){return createDeployment},getDeploymentStatus:function(){return getDeploymentStatus},rollbackDeployment:function(){return rollbackDeployment},rollbackDeploymentByNamespace:function(){return rollbackDeploymentByNamespace}});function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var createDeployment=/*#__PURE__*/function(){var _ref=_async_to_generator(function(deployment,config){var response,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,fetch("".concat(config.serverAddress,"/api/deployment"),{method:"POST",headers:{Authorization:"Bearer ".concat(config.apiToken),"Content-Type":"application/json"},body:JSON.stringify(deployment)})];case 1:response=_state.sent();if(!!response.ok)return[3,3];_=Error.bind;return[4,response.text()];case 2:throw new(_.apply(Error,[void 0,_state.sent()]));case 3:return[4,response.json()];case 4:return[2,_state.sent()]}})});return function createDeployment(deployment,config){return _ref.apply(this,arguments)}}();var getDeploymentStatus=/*#__PURE__*/function(){var _ref=_async_to_generator(function(deploymentId,config){var response,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,fetch("".concat(config.serverAddress,"/api/deployment/").concat(deploymentId),{method:"GET",headers:{Authorization:"Bearer ".concat(config.apiToken),"Content-Type":"application/json"}})];case 1:response=_state.sent();if(!!response.ok)return[3,3];_=Error.bind;return[4,response.text()];case 2:throw new(_.apply(Error,[void 0,_state.sent()]));case 3:return[4,response.json()];case 4:return[2,_state.sent()]}})});return function getDeploymentStatus(deploymentId,config){return _ref.apply(this,arguments)}}();var confirmDeployment=/*#__PURE__*/function(){var _ref=_async_to_generator(function(deploymentId,config){var response,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,fetch("".concat(config.serverAddress,"/api/deployment/").concat(deploymentId,"/confirm"),{method:"POST",headers:{Authorization:"Bearer ".concat(config.apiToken),"Content-Type":"application/json"}})];case 1:response=_state.sent();if(!!response.ok)return[3,3];_=Error.bind;return[4,response.text()];case 2:throw new(_.apply(Error,[void 0,_state.sent()]));case 3:return[2]}})});return function confirmDeployment(deploymentId,config){return _ref.apply(this,arguments)}}();var rollbackDeployment=/*#__PURE__*/function(){var _ref=_async_to_generator(function(deploymentId,config){var response,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,fetch("".concat(config.serverAddress,"/api/deployment/").concat(deploymentId,"/rollback"),{method:"POST",headers:{Authorization:"Bearer ".concat(config.apiToken),"Content-Type":"application/json"}})];case 1:response=_state.sent();if(!!response.ok)return[3,3];_=Error.bind;return[4,response.text()];case 2:throw new(_.apply(Error,[void 0,_state.sent()]));case 3:return[2]}})});return function rollbackDeployment(deploymentId,config){return _ref.apply(this,arguments)}}();var rollbackDeploymentByNamespace=/*#__PURE__*/function(){var _ref=_async_to_generator(function(config){var response,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,fetch("".concat(config.serverAddress,"/api/deployment/rollback/namespace"),{method:"POST",headers:{Authorization:"Bearer ".concat(config.apiToken),"Content-Type":"application/json"},body:JSON.stringify({namespace:config.namespace})})];case 1:response=_state.sent();if(!!response.ok)return[3,3];_=Error.bind;return[4,response.text()];case 2:throw new(_.apply(Error,[void 0,_state.sent()]));case 3:return[2]}})});return function rollbackDeploymentByNamespace(config){return _ref.apply(this,arguments)}}();
@@ -0,0 +1,2 @@
1
+ #! /usr/bin/env node
2
+ export {};
@@ -0,0 +1,2 @@
1
+ #! /usr/bin/env node
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});var _deployment=require("./deployment");var COMMAND_STATUS="status";var COMMAND_CREATE="create";var COMMAND_CONFIRM="confirm";var COMMAND_ROLLBACK="rollback";var COMMAND_ROLLBACK_NAMESPACE="rollback-namespace";var COMMAND_WAIT="wait";var _process_argv_;var arg=(_process_argv_=process.argv[2])!==null&&_process_argv_!==void 0?_process_argv_:COMMAND_CREATE;var getIdFromArgs=function(){var idString=process.argv[3];var id=idString?parseInt(idString,10):undefined;if(!id||id>0){throw new Error("id is required and has to by a number > 0")}return id};switch(arg){case COMMAND_STATUS:(0,_deployment.runPrintDeploymentStatus)(getIdFromArgs());break;case COMMAND_CREATE:(0,_deployment.runCreateDeployment)();break;case COMMAND_CONFIRM:(0,_deployment.runConfirmDeployment)(getIdFromArgs());break;case COMMAND_ROLLBACK:(0,_deployment.runRollbackDeployment)(getIdFromArgs());break;case COMMAND_ROLLBACK_NAMESPACE:(0,_deployment.runRollbackNamespaceDeployment)();break;case COMMAND_WAIT:(0,_deployment.runWait)(getIdFromArgs());break;default:throw new Error("unknown command: ".concat(arg))}
@@ -0,0 +1,7 @@
1
+ export interface CmdConfig {
2
+ schemaGlob: string;
3
+ namespace: string;
4
+ serverAddress: string;
5
+ apiToken: string;
6
+ }
7
+ export declare const useConfig: () => Promise<CmdConfig>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"useConfig",{enumerable:true,get:function(){return useConfig}});var _dotenv=require("dotenv");var _helpers=require("yargs/helpers");var _yargs=/*#__PURE__*/_interop_require_default(require("yargs/yargs"));function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var useConfig=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){var _process_env_MIGRATIONS_SECURE,argv,schemaGlob,serverAddress,apiToken,namespace,secure,httpProtocoll;return _ts_generator(this,function(_state){switch(_state.label){case 0:(0,_dotenv.config)();return[4,(0,_yargs.default)((0,_helpers.hideBin)(process.argv)).config({schemaGlob:"./src/**/*.graphql",serverAddress:"http://127.0.0.1",apiToken:"",namespace:""}).pkgConf("projections").argv];case 1:argv=_state.sent();schemaGlob=argv.schemaGlob;serverAddress=argv.serverAddress;apiToken=argv.apiToken;namespace=argv.namespace;secure=process.env.MIGRATIONS_SECURE==="1"||((_process_env_MIGRATIONS_SECURE=process.env.MIGRATIONS_SECURE)===null||_process_env_MIGRATIONS_SECURE===void 0?void 0:_process_env_MIGRATIONS_SECURE.toLowerCase())==="true";httpProtocoll=secure?"https":"http";if(process.env.MIGRATIONS_SCHEMA_GLOB){schemaGlob=process.env.MIGRATIONS_SCHEMA_GLOB}if(process.env.MIGRATIONS_SERVER_ADDRESS){serverAddress="".concat(httpProtocoll).concat(process.env.MIGRATIONS_SERVER_ADDRESS)}if(process.env.MIGRATIONS_API_TOKEN){apiToken=process.env.MIGRATIONS_API_TOKEN}if(process.env.MIGRATIONS_NAMESPACE){namespace=process.env.MIGRATIONS_NAMESPACE}if(namespace==="Fraym"){throw new Error("Cannot use Fraym as namespace as it is reserved for fraym apps")}return[2,{apiToken:apiToken,namespace:namespace,schemaGlob:schemaGlob,serverAddress:serverAddress}]}})});return function useConfig(){return _ref.apply(this,arguments)}}();
@@ -0,0 +1,6 @@
1
+ export declare const runPrintDeploymentStatus: (id: number) => Promise<void>;
2
+ export declare const runCreateDeployment: () => Promise<void>;
3
+ export declare const runConfirmDeployment: (id: number) => Promise<void>;
4
+ export declare const runRollbackDeployment: (id: number) => Promise<void>;
5
+ export declare const runRollbackNamespaceDeployment: () => Promise<void>;
6
+ export declare const runWait: (id: number) => Promise<void>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{runConfirmDeployment:function(){return runConfirmDeployment},runCreateDeployment:function(){return runCreateDeployment},runPrintDeploymentStatus:function(){return runPrintDeploymentStatus},runRollbackDeployment:function(){return runRollbackDeployment},runRollbackNamespaceDeployment:function(){return runRollbackNamespaceDeployment},runWait:function(){return runWait}});var _deployment=require("../api/deployment");var _schema=require("../schema");var _load=require("@graphql-tools/load");var _config=require("./config");var _loader=require("./loader");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var runPrintDeploymentStatus=/*#__PURE__*/function(){var _ref=_async_to_generator(function(id){var _ref,serverAddress,apiToken,namespace,status;return _ts_generator(this,function(_state){switch(_state.label){case 0:console.log("get deployment status ...");return[4,(0,_config.useConfig)()];case 1:_ref=_state.sent(),serverAddress=_ref.serverAddress,apiToken=_ref.apiToken,namespace=_ref.namespace;return[4,(0,_deployment.getDeploymentStatus)(id,{apiToken:apiToken,serverAddress:serverAddress,namespace:namespace})];case 2:status=_state.sent();console.log(status);return[2]}})});return function runPrintDeploymentStatus(id){return _ref.apply(this,arguments)}}();var runCreateDeployment=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){var _ref,schemaGlob,namespace,serverAddress,apiToken,schema,deployment,response;return _ts_generator(this,function(_state){switch(_state.label){case 0:console.log("creating deployment ...");return[4,(0,_config.useConfig)()];case 1:_ref=_state.sent(),schemaGlob=_ref.schemaGlob,namespace=_ref.namespace,serverAddress=_ref.serverAddress,apiToken=_ref.apiToken;return[4,(0,_load.loadSchema)(schemaGlob,{loaders:[_loader.replaceEnvPlaceholdersGraphQLFileLoader]})];case 2:schema=_state.sent();return[4,(0,_schema.getMigrationFromSchema)(schema,namespace,{dangerouslyRemoveGdprFields:false,skipServices:[],force:false})];case 3:deployment=_state.sent();return[4,(0,_deployment.createDeployment)(_object_spread({},deployment),{apiToken:apiToken,serverAddress:serverAddress,namespace:namespace})];case 4:response=_state.sent();console.log("created deployment ".concat(response.target,"/").concat(response.deploymentId));return[2]}})});return function runCreateDeployment(){return _ref.apply(this,arguments)}}();var runConfirmDeployment=/*#__PURE__*/function(){var _ref=_async_to_generator(function(id){var _ref,serverAddress,apiToken,namespace;return _ts_generator(this,function(_state){switch(_state.label){case 0:console.log("confirming deployment ...");return[4,(0,_config.useConfig)()];case 1:_ref=_state.sent(),serverAddress=_ref.serverAddress,apiToken=_ref.apiToken,namespace=_ref.namespace;return[4,(0,_deployment.confirmDeployment)(id,{apiToken:apiToken,serverAddress:serverAddress,namespace:namespace})];case 2:_state.sent();console.log("done confirming deployment");return[2]}})});return function runConfirmDeployment(id){return _ref.apply(this,arguments)}}();var runRollbackDeployment=/*#__PURE__*/function(){var _ref=_async_to_generator(function(id){var _ref,serverAddress,apiToken,namespace;return _ts_generator(this,function(_state){switch(_state.label){case 0:console.log("rolling back deployment ...");return[4,(0,_config.useConfig)()];case 1:_ref=_state.sent(),serverAddress=_ref.serverAddress,apiToken=_ref.apiToken,namespace=_ref.namespace;return[4,(0,_deployment.rollbackDeployment)(id,{apiToken:apiToken,serverAddress:serverAddress,namespace:namespace})];case 2:_state.sent();console.log("done rolling back deployment");return[2]}})});return function runRollbackDeployment(id){return _ref.apply(this,arguments)}}();var runRollbackNamespaceDeployment=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){var _ref,serverAddress,apiToken,namespace;return _ts_generator(this,function(_state){switch(_state.label){case 0:console.log("rolling back deployment ...");return[4,(0,_config.useConfig)()];case 1:_ref=_state.sent(),serverAddress=_ref.serverAddress,apiToken=_ref.apiToken,namespace=_ref.namespace;return[4,(0,_deployment.rollbackDeploymentByNamespace)({apiToken:apiToken,serverAddress:serverAddress,namespace:namespace})];case 2:_state.sent();console.log("done rolling back deployment");return[2]}})});return function runRollbackNamespaceDeployment(){return _ref.apply(this,arguments)}}();var runWait=/*#__PURE__*/function(){var _ref=_async_to_generator(function(id){var _ref,serverAddress,apiToken,namespace,isReady,percentage,status,newPercentage;return _ts_generator(this,function(_state){switch(_state.label){case 0:console.log("waiting for deployment to be done...");return[4,(0,_config.useConfig)()];case 1:_ref=_state.sent(),serverAddress=_ref.serverAddress,apiToken=_ref.apiToken,namespace=_ref.namespace;isReady=false;percentage=0;_state.label=2;case 2:if(!!isReady)return[3,5];return[4,(0,_deployment.getDeploymentStatus)(id,{apiToken:apiToken,serverAddress:serverAddress,namespace:namespace})];case 3:status=_state.sent();newPercentage=getPercentage(status);if(newPercentage===100){console.log("deployment is ready");return[3,5]}if(percentage!==newPercentage){console.log("current progress: ".concat(newPercentage,"%"))}percentage=newPercentage;return[4,sleep(1e3)];case 4:_state.sent();return[3,2];case 5:console.log("deployment is done");return[2]}})});return function runWait(id){return _ref.apply(this,arguments)}}();var sleep=/*#__PURE__*/function(){var _ref=_async_to_generator(function(time){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve){setTimeout(function(){resolve()},time)})]})});return function sleep(time){return _ref.apply(this,arguments)}}();var getPercentage=function(status){var percentageSum=0;var services=0;for(var key in status){if(key==="crud"||key==="auth"){if(status[key]===100){continue}}if(status[key]!==undefined){percentageSum+=status[key];services++}}return Math.floor(percentageSum/services)};
@@ -0,0 +1,2 @@
1
+ import { BaseLoaderOptions, Loader } from "@graphql-tools/utils";
2
+ export declare const replaceEnvPlaceholdersGraphQLFileLoader: Loader<BaseLoaderOptions>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"replaceEnvPlaceholdersGraphQLFileLoader",{enumerable:true,get:function(){return replaceEnvPlaceholdersGraphQLFileLoader}});var _fs=require("fs");var _globby=/*#__PURE__*/_interop_require_default(require("globby"));var _path=require("path");var _process=require("process");var _unixify=/*#__PURE__*/_interop_require_default(require("unixify"));var _utils=require("@graphql-tools/utils");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var readFile=_fs.promises.readFile,access=_fs.promises.access;var FILE_EXTENSIONS=[".gql",".graphql"];var replaceWithEnvData=function(str){var regex=/{{env\.([a-zA-Z_]+)}}/g;var matches=str.match(regex);var envData={};matches===null||matches===void 0?void 0:matches.forEach(function(match){var variable=match.replace("{{env.","").replace("}}","");if(!envData[variable]){var _process_env_variable;envData[variable]=(_process_env_variable=process.env[variable])!==null&&_process_env_variable!==void 0?_process_env_variable:""}});var outputStr=str;for(var key in envData){outputStr=outputStr.replaceAll("{{env.".concat(key,"}}"),envData[key])}return outputStr};var canLoad=/*#__PURE__*/function(){var _ref=_async_to_generator(function(pointer,options){var normalizedFilePath,e;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!(0,_utils.isValidPath)(pointer))return[3,4];if(!FILE_EXTENSIONS.find(function(extension){return pointer.endsWith(extension)}))return[3,4];normalizedFilePath=(0,_path.isAbsolute)(pointer)?pointer:(0,_path.resolve)(options.cwd||(0,_process.cwd)(),pointer);_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,access(normalizedFilePath)];case 2:_state.sent();return[2,true];case 3:e=_state.sent();return[2,false];case 4:return[2,false]}})});return function canLoad(pointer,options){return _ref.apply(this,arguments)}}();var buildGlobs=function(glob,options){var ignores=(0,_utils.asArray)(options.ignore||[]);return[(0,_unixify.default)(glob)].concat(_to_consumable_array(ignores.map(function(v){return"!".concat((0,_unixify.default)(v))})))};var resolveGlobs=/*#__PURE__*/function(){var _ref=_async_to_generator(function(glob,options){var _tmp,globs,result;return _ts_generator(this,function(_state){switch(_state.label){case 0:_tmp=!glob.includes("*");if(!_tmp)return[3,2];return[4,canLoad(glob,options)];case 1:_tmp=_state.sent();_state.label=2;case 2:if(_tmp&&!(0,_utils.asArray)(options.ignore||[]).length&&!options["includeSources"])return[2,[glob]];globs=buildGlobs(glob,options);return[4,(0,_globby.default)(globs,_object_spread_props(_object_spread({absolute:true},options),{ignore:[]}))];case 3:result=_state.sent();return[2,result]}})});return function resolveGlobs(glob,options){return _ref.apply(this,arguments)}}();var replaceEnvPlaceholdersGraphQLFileLoader={load:/*#__PURE__*/function(){var _ref=_async_to_generator(function(pointer,options){var resolvedPaths,finalResult,errors;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,resolveGlobs(pointer,options)];case 1:resolvedPaths=_state.sent();finalResult=[];errors=[];return[4,Promise.all(resolvedPaths.map(/*#__PURE__*/function(){var _ref=_async_to_generator(function(path){var normalizedFilePath,rawSDL,e;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,canLoad(path,options)];case 1:if(!_state.sent())return[3,5];_state.label=2;case 2:_state.trys.push([2,4,,5]);normalizedFilePath=(0,_path.isAbsolute)(path)?path:(0,_path.resolve)(options.cwd||(0,_process.cwd)(),path);return[4,readFile(normalizedFilePath,{encoding:"utf8"})];case 3:rawSDL=_state.sent();finalResult.push((0,_utils.parseGraphQLSDL)(normalizedFilePath,replaceWithEnvData(rawSDL),options));return[3,5];case 4:e=_state.sent();if(_process.env["DEBUG"]){console.error(e)}errors.push(e);return[3,5];case 5:return[2]}})});return function(path){return _ref.apply(this,arguments)}}()))];case 2:_state.sent();if(errors.length>0){if(errors.length===1){throw errors[0]}throw new AggregateError(errors,"Reading from ".concat(pointer," failed ; \n ")+errors.map(function(e){return e.message}).join("\n"))}return[2,finalResult]}})});return function(pointer,options){return _ref.apply(this,arguments)}}()};
@@ -0,0 +1,7 @@
1
+ export interface ClientConfig {
2
+ serverAddress: string;
3
+ apiToken: string;
4
+ namespace: string;
5
+ }
6
+ export declare const getEnvConfig: () => ClientConfig;
7
+ export declare const useConfigDefaults: (config?: ClientConfig) => Required<ClientConfig>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{getEnvConfig:function(){return getEnvConfig},useConfigDefaults:function(){return useConfigDefaults}});var _dotenv=require("dotenv");var getEnvConfig=function(){(0,_dotenv.config)();var _process_env_DEPLOYMENTS_SERVER_ADDRESS,_process_env_MIGRATIONS_API_TOKEN,_process_env_MIGRATIONS_NAMESPACE;return{serverAddress:(_process_env_DEPLOYMENTS_SERVER_ADDRESS=process.env.DEPLOYMENTS_SERVER_ADDRESS)!==null&&_process_env_DEPLOYMENTS_SERVER_ADDRESS!==void 0?_process_env_DEPLOYMENTS_SERVER_ADDRESS:"",apiToken:(_process_env_MIGRATIONS_API_TOKEN=process.env.MIGRATIONS_API_TOKEN)!==null&&_process_env_MIGRATIONS_API_TOKEN!==void 0?_process_env_MIGRATIONS_API_TOKEN:"",namespace:(_process_env_MIGRATIONS_NAMESPACE=process.env.MIGRATIONS_NAMESPACE)!==null&&_process_env_MIGRATIONS_NAMESPACE!==void 0?_process_env_MIGRATIONS_NAMESPACE:""}};var useConfigDefaults=function(config){if(!config){config=getEnvConfig()}return{serverAddress:config.serverAddress,apiToken:config.apiToken,namespace:config.namespace}};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});var _base=require("@becklyn/eslint/base");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}var _default=_to_consumable_array(_base.config);
@@ -0,0 +1,2 @@
1
+ import { ConstValueNode } from "graphql";
2
+ export declare const getArgumentValue: (v: ConstValueNode) => any;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getArgumentValue",{enumerable:true,get:function(){return getArgumentValue}});var _graphql=require("graphql");var getArgumentValue=function(v){switch(v.kind){case _graphql.Kind.LIST:return getValueFromListValueNode(v);case _graphql.Kind.STRING:return v.value;case _graphql.Kind.FLOAT:return parseFloat(v.value);case _graphql.Kind.INT:return parseInt(v.value);case _graphql.Kind.BOOLEAN:return v.value;case _graphql.Kind.NULL:return null;case _graphql.Kind.ENUM:return v.value;case _graphql.Kind.OBJECT:return getValueFromObjectValueNode(v)}};var getValueFromListValueNode=function(v){var listValue=[];v.values.forEach(function(el){listValue.push(getArgumentValue(el))});return listValue};var getValueFromObjectValueNode=function(v){var objectValue={};v.fields.forEach(function(f){objectValue[f.name.value]=getArgumentValue(f.value)});return objectValue};
@@ -0,0 +1,48 @@
1
+ export interface Deployment {
2
+ namespace: string;
3
+ permissions: string[];
4
+ projectionTypes: ObjectType[];
5
+ crudTypes: ObjectType[];
6
+ nestedTypes: ObjectType[];
7
+ enumTypes: EnumType[];
8
+ views: View[];
9
+ options: DeploymentOptions;
10
+ }
11
+ export interface DeploymentResponse {
12
+ deploymentId: number;
13
+ target: DeploymentTarget;
14
+ }
15
+ export type DeploymentTarget = "blue" | "green";
16
+ export interface DeploymentOptions {
17
+ dangerouslyRemoveGdprFields: boolean;
18
+ skipServices: string[];
19
+ force: boolean;
20
+ }
21
+ export interface View {
22
+ name: string;
23
+ sql: string;
24
+ directives: TypeDirective[];
25
+ fields: TypeField[];
26
+ }
27
+ export interface ObjectType {
28
+ name: string;
29
+ directives: TypeDirective[];
30
+ fields: TypeField[];
31
+ }
32
+ export interface EnumType {
33
+ name: string;
34
+ values: string[];
35
+ }
36
+ export interface TypeField {
37
+ name: string;
38
+ type: string[];
39
+ directives: TypeDirective[];
40
+ }
41
+ export interface TypeDirective {
42
+ name: string;
43
+ arguments: TypeArgument[];
44
+ }
45
+ export interface TypeArgument {
46
+ name: string;
47
+ value: any;
48
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});
@@ -0,0 +1,5 @@
1
+ import { FieldDefinitionNode, GraphQLObjectType } from "graphql";
2
+ import { TypeDirective } from "./data";
3
+ export declare const hasDirective: (t: GraphQLObjectType, name: string) => boolean;
4
+ export declare const getFieldDirectives: (f: FieldDefinitionNode) => TypeDirective[];
5
+ export declare const getObjectDirectives: (t: GraphQLObjectType) => TypeDirective[];
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{getFieldDirectives:function(){return getFieldDirectives},getObjectDirectives:function(){return getObjectDirectives},hasDirective:function(){return hasDirective}});var _argument=require("./argument");var hasDirective=function(t,name){var _t_astNode,_t_astNode1;if(!((_t_astNode=t.astNode)===null||_t_astNode===void 0?void 0:_t_astNode.directives)||((_t_astNode1=t.astNode)===null||_t_astNode1===void 0?void 0:_t_astNode1.directives.length)===0){return false}var directiveNames=t.astNode.directives.map(function(directive){return directive.name.value});return directiveNames.includes(name)};var getFieldDirectives=function(f){var _f_directives;var directives=[];(_f_directives=f.directives)===null||_f_directives===void 0?void 0:_f_directives.forEach(function(d){directives.push(getTypeDirective(d))});return directives};var getObjectDirectives=function(t){var _t_astNode_directives,_t_astNode;var directives=[];(_t_astNode=t.astNode)===null||_t_astNode===void 0?void 0:(_t_astNode_directives=_t_astNode.directives)===null||_t_astNode_directives===void 0?void 0:_t_astNode_directives.forEach(function(d){directives.push(getTypeDirective(d))});return directives};var getTypeDirective=function(d){var _d_arguments;var typeArguments=[];(_d_arguments=d.arguments)===null||_d_arguments===void 0?void 0:_d_arguments.forEach(function(a){typeArguments.push({name:a.name.value,value:(0,_argument.getArgumentValue)(a.value)})});return{name:d.name.value,arguments:typeArguments}};
@@ -0,0 +1,4 @@
1
+ import { GraphQLSchema } from "graphql";
2
+ import { EnumType } from "./data";
3
+ export declare const getPermissions: (schema: GraphQLSchema) => string[];
4
+ export declare const getEnums: (schema: GraphQLSchema, namespace: string) => EnumType[];
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{getEnums:function(){return getEnums},getPermissions:function(){return getPermissions}});var _graphql=require("graphql");var _util=require("./util");function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}var getPermissions=function(schema){var permissions=[];schema.toConfig().types.forEach(function(t){var _t_astNode_values,_t_astNode;if(!_instanceof(t,_graphql.GraphQLEnumType)){return}var name=t.toString();(0,_util.ensureValidName)(name);if(name!=="Permission"){return}(_t_astNode=t.astNode)===null||_t_astNode===void 0?void 0:(_t_astNode_values=_t_astNode.values)===null||_t_astNode_values===void 0?void 0:_t_astNode_values.forEach(function(value){permissions.push(value.name.value)})});return permissions};var getEnums=function(schema,namespace){var enums=[];schema.toConfig().types.forEach(function(t){var _t_astNode_values,_t_astNode;if(!_instanceof(t,_graphql.GraphQLEnumType)){return}var name=t.toString();(0,_util.ensureValidName)(name);if(name==="Permission"||name.startsWith("__")){return}var values=[];(_t_astNode=t.astNode)===null||_t_astNode===void 0?void 0:(_t_astNode_values=_t_astNode.values)===null||_t_astNode_values===void 0?void 0:_t_astNode_values.forEach(function(value){values.push(value.name.value)});enums.push({name:"".concat(namespace).concat(name),values:values})});return enums};
@@ -0,0 +1,3 @@
1
+ import { GraphQLObjectType } from "graphql";
2
+ import { TypeField } from "./data";
3
+ export declare const getObjectFields: (t: GraphQLObjectType, namespace: string) => TypeField[];
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getObjectFields",{enumerable:true,get:function(){return getObjectFields}});var _graphql=require("graphql");var _directive=require("./directive");var _util=require("./util");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}var getObjectFields=function(t,namespace){var _t_astNode_fields,_t_astNode;var fields=[];(_t_astNode=t.astNode)===null||_t_astNode===void 0?void 0:(_t_astNode_fields=_t_astNode.fields)===null||_t_astNode_fields===void 0?void 0:_t_astNode_fields.forEach(function(f){fields.push(getObjectField(f,namespace))});return fields};var getObjectField=function(f,namespace){return{name:f.name.value,directives:(0,_directive.getFieldDirectives)(f),type:getFieldType(f.type,namespace)}};var getFieldType=function(t,namespace){switch(t.kind){case _graphql.Kind.NAMED_TYPE:return getFieldTypeFromNamedTypeNode(t,namespace);case _graphql.Kind.LIST_TYPE:return["List"].concat(_to_consumable_array(getFieldType(t.type,namespace)));case _graphql.Kind.NON_NULL_TYPE:return["NonNull"].concat(_to_consumable_array(getFieldType(t.type,namespace)))}};var getFieldTypeFromNamedTypeNode=function(t,namespace){var name=t.name.value;if(name==="String"||name==="Float"||name==="ID"||name==="Boolean"||name==="Int"||name==="DateTime"||name==="EventEnvelope"||name==="File"){return["Named",name]}(0,_util.ensureValidName)("".concat(namespace).concat(name));return["Named","".concat(namespace).concat(name)]};
@@ -0,0 +1,3 @@
1
+ import { GraphQLSchema } from "graphql";
2
+ import { Deployment, DeploymentOptions } from "./data";
3
+ export declare const getMigrationFromSchema: (schema: GraphQLSchema, namespace: string, options: DeploymentOptions) => Promise<Deployment>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getMigrationFromSchema",{enumerable:true,get:function(){return getMigrationFromSchema}});var _fs=require("fs");var _graphql=require("graphql");var _path=/*#__PURE__*/_interop_require_default(require("path"));var _directive=require("./directive");var _enum=require("./enum");var _field=require("./field");var _util=require("./util");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var getMigrationFromSchema=/*#__PURE__*/function(){var _ref=_async_to_generator(function(schema,namespace,options){var _tmp;return _ts_generator(this,function(_state){switch(_state.label){case 0:_tmp=[{}];return[4,getTypes(schema,namespace)];case 1:return[2,_object_spread_props.apply(void 0,[_object_spread.apply(void 0,_tmp.concat([_state.sent()])),{namespace:namespace,enumTypes:(0,_enum.getEnums)(schema,namespace),permissions:(0,_enum.getPermissions)(schema),options:options}])]}})});return function getMigrationFromSchema(schema,namespace,options){return _ref.apply(this,arguments)}}();var getTypes=/*#__PURE__*/function(){var _ref=_async_to_generator(function(schema,namespace){var usedNames,crudTypes,projectionTypes,nestedTypes,views,_iteratorNormalCompletion,_didIteratorError,_iteratorError,_iterator,_step,t,name,_t_astNode,absolutePath,relativePath,directives,viewDirective,sqlFileArg,sqlFileName,sqlFilePath,sql,err;return _ts_generator(this,function(_state){switch(_state.label){case 0:usedNames=[];crudTypes=[];projectionTypes=[];nestedTypes=[];views=[];_iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;_state.label=1;case 1:_state.trys.push([1,9,10,11]);_iterator=schema.toConfig().types[Symbol.iterator]();_state.label=2;case 2:if(!!(_iteratorNormalCompletion=(_step=_iterator.next()).done))return[3,8];t=_step.value;if(!_instanceof(t,_graphql.GraphQLObjectType)||t.toString().startsWith("__")){return[3,7]}name="".concat(namespace).concat(t.toString());(0,_util.ensureValidName)(name);if(usedNames.includes(name)){throw new Error('duplicate definition for type "'.concat(name,'" detected, try renaming one of them as they have to be uniquely named'))}usedNames.push(name);if(!(0,_directive.hasDirective)(t,"crudType"))return[3,3];crudTypes.push({name:name,directives:(0,_directive.getObjectDirectives)(t),fields:(0,_field.getObjectFields)(t,namespace)});return[3,7];case 3:if(!((0,_directive.hasDirective)(t,"upsertOn")||(0,_directive.hasDirective)(t,"dangerouslyUpsertOn")))return[3,4];projectionTypes.push({name:name,directives:(0,_directive.getObjectDirectives)(t),fields:(0,_field.getObjectFields)(t,namespace)});return[3,7];case 4:if(!(0,_directive.hasDirective)(t,"view"))return[3,6];if(!((_t_astNode=t.astNode)===null||_t_astNode===void 0?void 0:_t_astNode.loc)){throw new Error('cannot resolve path of file that contains @view "'.concat(name,'"'))}absolutePath=t.astNode.loc.source.name;relativePath=absolutePath.split("/").slice(0,-1).join("/").replace(process.cwd(),".");directives=(0,_directive.getObjectDirectives)(t);viewDirective=directives.find(function(d){return d.name==="view"});sqlFileArg=viewDirective===null||viewDirective===void 0?void 0:viewDirective.arguments.find(function(a){return a.name==="sqlFile"});sqlFileName=sqlFileArg===null||sqlFileArg===void 0?void 0:sqlFileArg.value;if(!sqlFileName||typeof sqlFileName!=="string"){throw new Error('view directive on type "'.concat(name,'" requires a sqlFile argument'))}sqlFilePath=sqlFileName.startsWith(".")?"./"+_path.default.join(relativePath,sqlFileName):sqlFileName.startsWith("/")?sqlFileName.slice(1):sqlFileName;return[4,_fs.promises.readFile(sqlFilePath,{encoding:"utf8"})];case 5:sql=_state.sent();console.log(name,sql);views.push({name:name,sql:sql,directives:directives,fields:(0,_field.getObjectFields)(t,namespace)});return[3,7];case 6:nestedTypes.push({name:name,directives:(0,_directive.getObjectDirectives)(t),fields:(0,_field.getObjectFields)(t,namespace)});_state.label=7;case 7:_iteratorNormalCompletion=true;return[3,2];case 8:return[3,11];case 9:err=_state.sent();_didIteratorError=true;_iteratorError=err;return[3,11];case 10:try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}return[7];case 11:return[2,{crudTypes:crudTypes,projectionTypes:projectionTypes,nestedTypes:nestedTypes,views:views}]}})});return function getTypes(schema,namespace){return _ref.apply(this,arguments)}}();
@@ -0,0 +1 @@
1
+ export declare const ensureValidName: (name: string) => void | never;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ensureValidName",{enumerable:true,get:function(){return ensureValidName}});var ensureValidName=function(name){if(name.startsWith("Fraym")){throw new Error("Cannot use Fraym as type, enum and scalar prefix as it is reserved for fraym apps, got ".concat(name))}};
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@fraym/deployments",
3
+ "version": "0.31.0",
4
+ "license": "MIT",
5
+ "homepage": "https://github.com/fraym/freym-api",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/fraym/freym-api.git"
9
+ },
10
+ "description": "JS client implementation of the deployments service of Freym",
11
+ "scripts": {
12
+ "build": "rm -rf dist && tsc && npx swc . -d dist && chmod +x dist/cmd/cmd.js",
13
+ "lint": "eslint && prettier --check \"**/*.{ts,tsx,json,scss,css}\"",
14
+ "fix": "eslint --fix && prettier --write \"**/*.{ts,tsx,json,scss,css}\"",
15
+ "cmd": "dist/cmd/cmd.js"
16
+ },
17
+ "files": [
18
+ "dist/**/*"
19
+ ],
20
+ "bin": {
21
+ "migration": "dist/cmd/cmd.js"
22
+ },
23
+ "engines": {
24
+ "node": ">=20"
25
+ },
26
+ "main": "dist/index.js",
27
+ "types": "dist/index.d.ts",
28
+ "dependencies": {
29
+ "@graphql-tools/import": "^7.0.13",
30
+ "@graphql-tools/load": "^8.0.14",
31
+ "@grpc/grpc-js": "^1.12.6",
32
+ "dotenv": "^16.4.7",
33
+ "glob": "^11.0.1",
34
+ "globby": "11.1.0",
35
+ "graphql": "^16.10.0",
36
+ "unixify": "^1.0.0",
37
+ "yargs": "^17.7.2"
38
+ },
39
+ "devDependencies": {
40
+ "@types/unixify": "^1.0.2",
41
+ "@types/yargs": "^17.0.33"
42
+ },
43
+ "prettier": "@becklyn/prettier"
44
+ }