init
This commit is contained in:
		
							
								
								
									
										68
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
node_modules
 | 
			
		||||
 | 
			
		||||
# mac
 | 
			
		||||
.DS_Store
 | 
			
		||||
 | 
			
		||||
.env*
 | 
			
		||||
!.env*example
 | 
			
		||||
 | 
			
		||||
dist
 | 
			
		||||
build
 | 
			
		||||
logs
 | 
			
		||||
 | 
			
		||||
.turbo
 | 
			
		||||
 | 
			
		||||
pack-dist
 | 
			
		||||
 | 
			
		||||
# astro
 | 
			
		||||
.astro
 | 
			
		||||
 | 
			
		||||
# next
 | 
			
		||||
.next
 | 
			
		||||
 | 
			
		||||
# nuxt
 | 
			
		||||
.nuxt
 | 
			
		||||
 | 
			
		||||
# vercel
 | 
			
		||||
.vercel
 | 
			
		||||
 | 
			
		||||
# vuepress
 | 
			
		||||
.vuepress/dist
 | 
			
		||||
 | 
			
		||||
# coverage
 | 
			
		||||
coverage/
 | 
			
		||||
 | 
			
		||||
# typescript
 | 
			
		||||
*.tsbuildinfo
 | 
			
		||||
 | 
			
		||||
# debug logs
 | 
			
		||||
*.log
 | 
			
		||||
*.tmp
 | 
			
		||||
 | 
			
		||||
# vscode
 | 
			
		||||
.vscode/*
 | 
			
		||||
!.vscode/settings.json
 | 
			
		||||
!.vscode/tasks.json
 | 
			
		||||
!.vscode/launch.json
 | 
			
		||||
!.vscode/extensions.json
 | 
			
		||||
 | 
			
		||||
# idea
 | 
			
		||||
.idea
 | 
			
		||||
 | 
			
		||||
# system
 | 
			
		||||
Thumbs.db
 | 
			
		||||
ehthumbs.db
 | 
			
		||||
Desktop.ini
 | 
			
		||||
 | 
			
		||||
# temp files
 | 
			
		||||
*.tmp
 | 
			
		||||
*.temp
 | 
			
		||||
 | 
			
		||||
# local development
 | 
			
		||||
*.local
 | 
			
		||||
 | 
			
		||||
public/r
 | 
			
		||||
 | 
			
		||||
.pnpm-store
 | 
			
		||||
 | 
			
		||||
storage/
 | 
			
		||||
							
								
								
									
										2
									
								
								.npmrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.npmrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
//npm.xiongxiao.me/:_authToken=${ME_NPM_TOKEN}
 | 
			
		||||
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
 | 
			
		||||
							
								
								
									
										25
									
								
								bun.config.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								bun.config.mjs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
// @ts-check
 | 
			
		||||
import { resolvePath } from '@kevisual/use-config';
 | 
			
		||||
import { execSync } from 'node:child_process';
 | 
			
		||||
 | 
			
		||||
const entry = 'src/index.ts';
 | 
			
		||||
const naming = 'app';
 | 
			
		||||
const external = ['sequelize', 'pg', 'sqlite3', 'minio', '@kevisual/router', 'pm2'];
 | 
			
		||||
/**
 | 
			
		||||
 * @type {import('bun').BuildConfig}
 | 
			
		||||
 */
 | 
			
		||||
await Bun.build({
 | 
			
		||||
  target: 'node',
 | 
			
		||||
  format: 'esm',
 | 
			
		||||
  entrypoints: [resolvePath(entry, { meta: import.meta })],
 | 
			
		||||
  outdir: resolvePath('./dist', { meta: import.meta }),
 | 
			
		||||
  naming: {
 | 
			
		||||
    entry: `${naming}.js`,
 | 
			
		||||
  },
 | 
			
		||||
  external: external,
 | 
			
		||||
  env: 'KEVISUAL_*',
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// const cmd = `dts -i src/index.ts -o app.d.ts`;
 | 
			
		||||
const cmd = `dts -i ${entry} -o ${naming}.d.ts`;
 | 
			
		||||
execSync(cmd, { stdio: 'inherit' });
 | 
			
		||||
							
								
								
									
										34
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@kevisual/noco",
 | 
			
		||||
  "version": "0.0.1",
 | 
			
		||||
  "description": "",
 | 
			
		||||
  "main": "index.js",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": " bun bun.config.mjs"
 | 
			
		||||
  },
 | 
			
		||||
  "publishConfig": {
 | 
			
		||||
    "access": "public"
 | 
			
		||||
  },
 | 
			
		||||
  "files": [
 | 
			
		||||
    "dist",
 | 
			
		||||
    "src"
 | 
			
		||||
  ],
 | 
			
		||||
  "keywords": [
 | 
			
		||||
    "nocodb",
 | 
			
		||||
    "api",
 | 
			
		||||
    "sdk"
 | 
			
		||||
  ],
 | 
			
		||||
  "author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "packageManager": "pnpm@10.14.0",
 | 
			
		||||
  "type": "module",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@kevisual/types": "^0.0.10",
 | 
			
		||||
    "@kevisual/use-config": "^1.0.19",
 | 
			
		||||
    "@types/node": "^24.2.1",
 | 
			
		||||
    "nocodb-sdk": "^0.264.4"
 | 
			
		||||
  },
 | 
			
		||||
  "exports": {
 | 
			
		||||
    ".": "./dist/app.js"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										338
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										338
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,338 @@
 | 
			
		||||
lockfileVersion: '9.0'
 | 
			
		||||
 | 
			
		||||
settings:
 | 
			
		||||
  autoInstallPeers: true
 | 
			
		||||
  excludeLinksFromLockfile: false
 | 
			
		||||
 | 
			
		||||
importers:
 | 
			
		||||
 | 
			
		||||
  .:
 | 
			
		||||
    devDependencies:
 | 
			
		||||
      '@kevisual/types':
 | 
			
		||||
        specifier: ^0.0.10
 | 
			
		||||
        version: 0.0.10
 | 
			
		||||
      '@kevisual/use-config':
 | 
			
		||||
        specifier: ^1.0.19
 | 
			
		||||
        version: 1.0.19(dotenv@16.6.1)
 | 
			
		||||
      '@types/node':
 | 
			
		||||
        specifier: ^24.2.1
 | 
			
		||||
        version: 24.2.1
 | 
			
		||||
      nocodb-sdk:
 | 
			
		||||
        specifier: ^0.264.4
 | 
			
		||||
        version: 0.264.4
 | 
			
		||||
 | 
			
		||||
packages:
 | 
			
		||||
 | 
			
		||||
  '@chevrotain/cst-dts-gen@10.5.0':
 | 
			
		||||
    resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==}
 | 
			
		||||
 | 
			
		||||
  '@chevrotain/gast@10.5.0':
 | 
			
		||||
    resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==}
 | 
			
		||||
 | 
			
		||||
  '@chevrotain/types@10.5.0':
 | 
			
		||||
    resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==}
 | 
			
		||||
 | 
			
		||||
  '@chevrotain/utils@10.5.0':
 | 
			
		||||
    resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/load@0.0.6':
 | 
			
		||||
    resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/types@0.0.10':
 | 
			
		||||
    resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/use-config@1.0.19':
 | 
			
		||||
    resolution: {integrity: sha512-Q1IH4eMqUe5w6Bq8etoqOSls9FPIy0xwwD3wHf26EsQLZadhccI9qkDuFzP/rFWDa57mwFPEfwbGE5UlqWOCkw==}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      dotenv: ^16.4.7
 | 
			
		||||
 | 
			
		||||
  '@types/node@24.2.1':
 | 
			
		||||
    resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==}
 | 
			
		||||
 | 
			
		||||
  asynckit@0.4.0:
 | 
			
		||||
    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
 | 
			
		||||
 | 
			
		||||
  axios@1.11.0:
 | 
			
		||||
    resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==}
 | 
			
		||||
 | 
			
		||||
  call-bind-apply-helpers@1.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  chevrotain@10.5.0:
 | 
			
		||||
    resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==}
 | 
			
		||||
 | 
			
		||||
  combined-stream@1.0.8:
 | 
			
		||||
    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
 | 
			
		||||
    engines: {node: '>= 0.8'}
 | 
			
		||||
 | 
			
		||||
  dayjs@1.11.13:
 | 
			
		||||
    resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
 | 
			
		||||
 | 
			
		||||
  delayed-stream@1.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
 | 
			
		||||
    engines: {node: '>=0.4.0'}
 | 
			
		||||
 | 
			
		||||
  dotenv@16.6.1:
 | 
			
		||||
    resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
 | 
			
		||||
  dunder-proto@1.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  es-define-property@1.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  es-errors@1.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  es-object-atoms@1.1.1:
 | 
			
		||||
    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  es-set-tostringtag@2.1.0:
 | 
			
		||||
    resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  eventemitter3@5.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
 | 
			
		||||
 | 
			
		||||
  follow-redirects@1.15.11:
 | 
			
		||||
    resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
 | 
			
		||||
    engines: {node: '>=4.0'}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      debug: '*'
 | 
			
		||||
    peerDependenciesMeta:
 | 
			
		||||
      debug:
 | 
			
		||||
        optional: true
 | 
			
		||||
 | 
			
		||||
  form-data@4.0.4:
 | 
			
		||||
    resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
 | 
			
		||||
    engines: {node: '>= 6'}
 | 
			
		||||
 | 
			
		||||
  function-bind@1.1.2:
 | 
			
		||||
    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
 | 
			
		||||
 | 
			
		||||
  get-intrinsic@1.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  get-proto@1.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  gopd@1.2.0:
 | 
			
		||||
    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  has-symbols@1.1.0:
 | 
			
		||||
    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  has-tostringtag@1.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  hasown@2.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  jsep@1.4.0:
 | 
			
		||||
    resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==}
 | 
			
		||||
    engines: {node: '>= 10.16.0'}
 | 
			
		||||
 | 
			
		||||
  lodash@4.17.21:
 | 
			
		||||
    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
 | 
			
		||||
 | 
			
		||||
  math-intrinsics@1.1.0:
 | 
			
		||||
    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
 | 
			
		||||
    engines: {node: '>= 0.4'}
 | 
			
		||||
 | 
			
		||||
  mime-db@1.52.0:
 | 
			
		||||
    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
 | 
			
		||||
    engines: {node: '>= 0.6'}
 | 
			
		||||
 | 
			
		||||
  mime-types@2.1.35:
 | 
			
		||||
    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
 | 
			
		||||
    engines: {node: '>= 0.6'}
 | 
			
		||||
 | 
			
		||||
  nocodb-sdk@0.264.4:
 | 
			
		||||
    resolution: {integrity: sha512-t5DI7FNO1LiMqFXI82GbZefMgjhd+0FL8yjF7QW0n4fPoL24W2+8pJ2mVfhJRnvmZ5wQuLCXMlcdqFcgbpuw7g==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
 | 
			
		||||
  proxy-from-env@1.1.0:
 | 
			
		||||
    resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
 | 
			
		||||
 | 
			
		||||
  regexp-to-ast@0.5.0:
 | 
			
		||||
    resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==}
 | 
			
		||||
 | 
			
		||||
  undici-types@7.10.0:
 | 
			
		||||
    resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
 | 
			
		||||
 | 
			
		||||
  validator@13.15.15:
 | 
			
		||||
    resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==}
 | 
			
		||||
    engines: {node: '>= 0.10'}
 | 
			
		||||
 | 
			
		||||
snapshots:
 | 
			
		||||
 | 
			
		||||
  '@chevrotain/cst-dts-gen@10.5.0':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@chevrotain/gast': 10.5.0
 | 
			
		||||
      '@chevrotain/types': 10.5.0
 | 
			
		||||
      lodash: 4.17.21
 | 
			
		||||
 | 
			
		||||
  '@chevrotain/gast@10.5.0':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@chevrotain/types': 10.5.0
 | 
			
		||||
      lodash: 4.17.21
 | 
			
		||||
 | 
			
		||||
  '@chevrotain/types@10.5.0': {}
 | 
			
		||||
 | 
			
		||||
  '@chevrotain/utils@10.5.0': {}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/load@0.0.6':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      eventemitter3: 5.0.1
 | 
			
		||||
 | 
			
		||||
  '@kevisual/types@0.0.10': {}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/use-config@1.0.19(dotenv@16.6.1)':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@kevisual/load': 0.0.6
 | 
			
		||||
      dotenv: 16.6.1
 | 
			
		||||
 | 
			
		||||
  '@types/node@24.2.1':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      undici-types: 7.10.0
 | 
			
		||||
 | 
			
		||||
  asynckit@0.4.0: {}
 | 
			
		||||
 | 
			
		||||
  axios@1.11.0:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      follow-redirects: 1.15.11
 | 
			
		||||
      form-data: 4.0.4
 | 
			
		||||
      proxy-from-env: 1.1.0
 | 
			
		||||
    transitivePeerDependencies:
 | 
			
		||||
      - debug
 | 
			
		||||
 | 
			
		||||
  call-bind-apply-helpers@1.0.2:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      es-errors: 1.3.0
 | 
			
		||||
      function-bind: 1.1.2
 | 
			
		||||
 | 
			
		||||
  chevrotain@10.5.0:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@chevrotain/cst-dts-gen': 10.5.0
 | 
			
		||||
      '@chevrotain/gast': 10.5.0
 | 
			
		||||
      '@chevrotain/types': 10.5.0
 | 
			
		||||
      '@chevrotain/utils': 10.5.0
 | 
			
		||||
      lodash: 4.17.21
 | 
			
		||||
      regexp-to-ast: 0.5.0
 | 
			
		||||
 | 
			
		||||
  combined-stream@1.0.8:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      delayed-stream: 1.0.0
 | 
			
		||||
 | 
			
		||||
  dayjs@1.11.13: {}
 | 
			
		||||
 | 
			
		||||
  delayed-stream@1.0.0: {}
 | 
			
		||||
 | 
			
		||||
  dotenv@16.6.1: {}
 | 
			
		||||
 | 
			
		||||
  dunder-proto@1.0.1:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      call-bind-apply-helpers: 1.0.2
 | 
			
		||||
      es-errors: 1.3.0
 | 
			
		||||
      gopd: 1.2.0
 | 
			
		||||
 | 
			
		||||
  es-define-property@1.0.1: {}
 | 
			
		||||
 | 
			
		||||
  es-errors@1.3.0: {}
 | 
			
		||||
 | 
			
		||||
  es-object-atoms@1.1.1:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      es-errors: 1.3.0
 | 
			
		||||
 | 
			
		||||
  es-set-tostringtag@2.1.0:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      es-errors: 1.3.0
 | 
			
		||||
      get-intrinsic: 1.3.0
 | 
			
		||||
      has-tostringtag: 1.0.2
 | 
			
		||||
      hasown: 2.0.2
 | 
			
		||||
 | 
			
		||||
  eventemitter3@5.0.1: {}
 | 
			
		||||
 | 
			
		||||
  follow-redirects@1.15.11: {}
 | 
			
		||||
 | 
			
		||||
  form-data@4.0.4:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      asynckit: 0.4.0
 | 
			
		||||
      combined-stream: 1.0.8
 | 
			
		||||
      es-set-tostringtag: 2.1.0
 | 
			
		||||
      hasown: 2.0.2
 | 
			
		||||
      mime-types: 2.1.35
 | 
			
		||||
 | 
			
		||||
  function-bind@1.1.2: {}
 | 
			
		||||
 | 
			
		||||
  get-intrinsic@1.3.0:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      call-bind-apply-helpers: 1.0.2
 | 
			
		||||
      es-define-property: 1.0.1
 | 
			
		||||
      es-errors: 1.3.0
 | 
			
		||||
      es-object-atoms: 1.1.1
 | 
			
		||||
      function-bind: 1.1.2
 | 
			
		||||
      get-proto: 1.0.1
 | 
			
		||||
      gopd: 1.2.0
 | 
			
		||||
      has-symbols: 1.1.0
 | 
			
		||||
      hasown: 2.0.2
 | 
			
		||||
      math-intrinsics: 1.1.0
 | 
			
		||||
 | 
			
		||||
  get-proto@1.0.1:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      dunder-proto: 1.0.1
 | 
			
		||||
      es-object-atoms: 1.1.1
 | 
			
		||||
 | 
			
		||||
  gopd@1.2.0: {}
 | 
			
		||||
 | 
			
		||||
  has-symbols@1.1.0: {}
 | 
			
		||||
 | 
			
		||||
  has-tostringtag@1.0.2:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      has-symbols: 1.1.0
 | 
			
		||||
 | 
			
		||||
  hasown@2.0.2:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      function-bind: 1.1.2
 | 
			
		||||
 | 
			
		||||
  jsep@1.4.0: {}
 | 
			
		||||
 | 
			
		||||
  lodash@4.17.21: {}
 | 
			
		||||
 | 
			
		||||
  math-intrinsics@1.1.0: {}
 | 
			
		||||
 | 
			
		||||
  mime-db@1.52.0: {}
 | 
			
		||||
 | 
			
		||||
  mime-types@2.1.35:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      mime-db: 1.52.0
 | 
			
		||||
 | 
			
		||||
  nocodb-sdk@0.264.4:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      axios: 1.11.0
 | 
			
		||||
      chevrotain: 10.5.0
 | 
			
		||||
      dayjs: 1.11.13
 | 
			
		||||
      jsep: 1.4.0
 | 
			
		||||
      validator: 13.15.15
 | 
			
		||||
    transitivePeerDependencies:
 | 
			
		||||
      - debug
 | 
			
		||||
 | 
			
		||||
  proxy-from-env@1.1.0: {}
 | 
			
		||||
 | 
			
		||||
  regexp-to-ast@0.5.0: {}
 | 
			
		||||
 | 
			
		||||
  undici-types@7.10.0: {}
 | 
			
		||||
 | 
			
		||||
  validator@13.15.15: {}
 | 
			
		||||
							
								
								
									
										46
									
								
								src/api.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/api.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
type HeadersInit = {
 | 
			
		||||
  'xc-token': string;
 | 
			
		||||
  [key: string]: string;
 | 
			
		||||
};
 | 
			
		||||
type FetchOptions = {
 | 
			
		||||
  method?: string;
 | 
			
		||||
  headers?: HeadersInit;
 | 
			
		||||
  body?: string;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
type MakeRequestOptions = {
 | 
			
		||||
  params?: Record<string, any>;
 | 
			
		||||
  data?: Record<string, any>;
 | 
			
		||||
  method?: 'GET' | 'POST';
 | 
			
		||||
};
 | 
			
		||||
export class Query {
 | 
			
		||||
  baseUrl: string;
 | 
			
		||||
  token: string;
 | 
			
		||||
  constructor({ baseUrl, token }: { baseUrl: string; token: string }) {
 | 
			
		||||
    this.baseUrl = baseUrl;
 | 
			
		||||
    this.token = token;
 | 
			
		||||
  }
 | 
			
		||||
  makeRequest(endpoint: string, options: MakeRequestOptions) {
 | 
			
		||||
    const url = new URL(endpoint, this.baseUrl);
 | 
			
		||||
    if (options.params) {
 | 
			
		||||
      Object.entries(options.params).forEach(([key, value]) => {
 | 
			
		||||
        url.searchParams.append(key, String(value));
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
    const method = options.method || 'GET';
 | 
			
		||||
    const headers: HeadersInit = {
 | 
			
		||||
      'xc-token': `${this.token}`,
 | 
			
		||||
    };
 | 
			
		||||
    if (method === 'POST') {
 | 
			
		||||
      headers['Content-Type'] = 'application/json';
 | 
			
		||||
    }
 | 
			
		||||
    const fetchOptions: FetchOptions = {
 | 
			
		||||
      method,
 | 
			
		||||
      headers,
 | 
			
		||||
    };
 | 
			
		||||
    if (method === 'POST' && options.data) {
 | 
			
		||||
      fetchOptions.body = JSON.stringify(options.data);
 | 
			
		||||
    }
 | 
			
		||||
    return fetch(url, fetchOptions);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								src/base.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/base.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
import { Query } from './api.ts';
 | 
			
		||||
 | 
			
		||||
type NocoApiOptions = {
 | 
			
		||||
  table?: string;
 | 
			
		||||
  token?: string;
 | 
			
		||||
  baseUrl?: string;
 | 
			
		||||
};
 | 
			
		||||
export class NocoApi {
 | 
			
		||||
  table?: string;
 | 
			
		||||
  query?: Query;
 | 
			
		||||
  constructor(options?: NocoApiOptions) {
 | 
			
		||||
    this.table = options.table;
 | 
			
		||||
    const token = options.token;
 | 
			
		||||
    const baseUrl = options.baseUrl;
 | 
			
		||||
    this.query = new Query({ baseUrl, token });
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								src/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/index.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
export * from './base.ts';
 | 
			
		||||
							
								
								
									
										18
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
{
 | 
			
		||||
  "extends": "@kevisual/types/json/backend.json",
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "baseUrl": ".",
 | 
			
		||||
    "typeRoots": [
 | 
			
		||||
      "./node_modules/@types",
 | 
			
		||||
      "./node_modules/@kevisual/types/index.d.ts"
 | 
			
		||||
    ],
 | 
			
		||||
    "paths": {
 | 
			
		||||
      "@/*": [
 | 
			
		||||
        "src/*"
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  "include": [
 | 
			
		||||
    "src/**/*",
 | 
			
		||||
  ],
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user