diff --git a/.gitea/workflows/docker_nottags.yaml b/.gitea/workflows/docker_nottags.yaml new file mode 100644 index 0000000..5ef55e2 --- /dev/null +++ b/.gitea/workflows/docker_nottags.yaml @@ -0,0 +1,35 @@ +name: Docker (non-tag pushes) + +on: + push: + tags-ignore: + - '**' + +env: + IMAGE: code.foss.global/host.today/ht-docker-node:szci + NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git + NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }} + +jobs: + test: + runs-on: ubuntu-latest + container: + image: ${{ env.IMAGE }} + + steps: + - uses: actions/checkout@v3 + + - name: Prepare + run: | + pnpm install -g pnpm + pnpm install -g @git.zone/tsdocker@latest + pnpm install + + - name: Test + run: pnpm test + + - name: Build image + run: tsdocker build + + - name: Test image + run: tsdocker test diff --git a/.gitea/workflows/docker_tags.yaml b/.gitea/workflows/docker_tags.yaml new file mode 100644 index 0000000..073a96b --- /dev/null +++ b/.gitea/workflows/docker_tags.yaml @@ -0,0 +1,41 @@ +name: Docker (tags) + +on: + push: + tags: + - '*' + +env: + IMAGE: code.foss.global/host.today/ht-docker-node:szci + NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git + NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }} + +jobs: + release: + runs-on: ubuntu-latest + container: + image: code.foss.global/host.today/ht-docker-dbase:szci + + steps: + - uses: actions/checkout@v3 + + - name: Prepare + run: | + pnpm install -g pnpm + pnpm install -g @git.zone/tsdocker@latest + pnpm install + + - name: Login to registries + run: tsdocker login + + - name: List images + run: tsdocker list + + - name: Build images + run: tsdocker build + + - name: Test images + run: tsdocker test + + - name: Push to code.foss.global + run: tsdocker push code.foss.global diff --git a/.smartconfig.json b/.smartconfig.json index 1712fc3..0a65c5e 100644 --- a/.smartconfig.json +++ b/.smartconfig.json @@ -4,17 +4,16 @@ "npmRegistryUrl": "verdaccio.lossless.one" }, "@git.zone/tsdocker": { + "registries": ["code.foss.global"], "registryRepoMap": { - "registry.gitlab.com": "losslessone/services/servezone/coretraffic" + "code.foss.global": "serve.zone/coretraffic" }, - "buildArgEnvMap": { - "SZCI_TOKEN_NPM2": "SZCI_TOKEN_NPM2" - } + "platforms": ["linux/amd64", "linux/arm64"] }, "@git.zone/cli": { "projectType": "service", "module": { - "githost": "gitlab.com", + "githost": "code.foss.global", "gitscope": "serve.zone", "gitrepo": "coretraffic", "shortDescription": "route traffic within your docker setup. TypeScript ready.", diff --git a/Dockerfile b/Dockerfile index 3e234de..ce500d0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,46 +1,33 @@ # gitzone dockerfile_service ## STAGE 1 // BUILD -FROM code.foss.global/host.today/ht-docker-node:szci as node1 -COPY ./ /app +FROM code.foss.global/host.today/ht-docker-node:lts AS build + WORKDIR /app -ARG SZCI_TOKEN_NPM2 -ENV SZCI_TOKEN_NPM2 $SZCI_TOKEN_NPM2 -RUN szci npm prepare + +COPY package.json pnpm-lock.yaml ./ RUN pnpm config set store-dir .pnpm-store -RUN rm -rf node_modules && pnpm install +RUN pnpm install --frozen-lockfile + +COPY . ./ RUN pnpm run build - -# gitzone dockerfile_service -## STAGE 2 // install production -FROM code.foss.global/host.today/ht-docker-node:szci as node2 -WORKDIR /app -COPY --from=node1 /app /app RUN rm -rf .pnpm-store -ARG SZCI_TOKEN_NPM2 -ENV SZCI_TOKEN_NPM2 $SZCI_TOKEN_NPM2 -RUN szci npm prepare -RUN pnpm config set store-dir .pnpm-store -RUN rm -rf node_modules/ && pnpm install --prod +RUN pnpm prune --prod +## STAGE 2 // PRODUCTION +FROM code.foss.global/host.today/ht-docker-node:lts AS production -## STAGE 3 // rebuild dependencies for alpine -FROM code.foss.global/host.today/ht-docker-node:alpine-szci as node3 WORKDIR /app -COPY --from=node2 /app /app -ARG SZCI_TOKEN_NPM2 -ENV SZCI_TOKEN_NPM2 $SZCI_TOKEN_NPM2 -RUN szci npm prepare -RUN pnpm config set store-dir .pnpm-store -RUN pnpm rebuild -r -## STAGE 4 // the final production image with all dependencies in place -FROM code.foss.global/host.today/ht-docker-node:alpine-node as node4 -WORKDIR /app -COPY --from=node3 /app /app +ENV NODE_ENV=production -### Healthchecks -RUN pnpm install -g @servezone/healthy -HEALTHCHECK --interval=30s --timeout=30s --start-period=30s --retries=3 CMD [ "healthy" ] +COPY --from=build /app/package.json ./package.json +COPY --from=build /app/node_modules ./node_modules +COPY --from=build /app/cli.js ./cli.js +COPY --from=build /app/dist_ts ./dist_ts + +LABEL org.opencontainers.image.title="coretraffic" \ + org.opencontainers.image.description="serve.zone reverse proxy and routing gateway" \ + org.opencontainers.image.source="https://code.foss.global/serve.zone/coretraffic" EXPOSE 80 -CMD ["npm", "start"] +CMD ["node", "cli.js"] diff --git a/package.json b/package.json index ae97db1..208096e 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,9 @@ "start": "node --max_old_space_size=1000 cli.js", "startTs": "node cli.ts.js", "test": "(tstest test/)", - "build": "(tsbuild)" + "build": "(tsbuild)", + "build:docker": "tsdocker build --verbose", + "release:docker": "tsdocker push --verbose" }, "repository": { "type": "git", @@ -47,11 +49,12 @@ "@push.rocks/smartshell": "^3.3.8", "@push.rocks/smartstring": "^4.0.2", "@push.rocks/taskbuffer": "^8.0.2", - "@serve.zone/interfaces": "^5.4.4", + "@serve.zone/interfaces": "^5.4.6", "@tsclass/tsclass": "^9.5.0" }, "devDependencies": { "@git.zone/tsbuild": "^4.4.0", + "@git.zone/tsdocker": "^2.2.4", "@git.zone/tsrun": "^2.0.2", "@git.zone/tstest": "^3.6.3", "@types/node": "^25.6.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fcd7ffc..2fd0604 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,8 +51,8 @@ importers: specifier: ^8.0.2 version: 8.0.2 '@serve.zone/interfaces': - specifier: ^5.4.4 - version: 5.4.4 + specifier: ^5.4.6 + version: 5.4.6 '@tsclass/tsclass': specifier: ^9.5.0 version: 9.5.0 @@ -60,6 +60,9 @@ importers: '@git.zone/tsbuild': specifier: ^4.4.0 version: 4.4.0 + '@git.zone/tsdocker': + specifier: ^2.2.4 + version: 2.2.4 '@git.zone/tsrun': specifier: ^2.0.2 version: 2.0.2 @@ -471,6 +474,10 @@ packages: resolution: {integrity: sha512-dw2VFlgKssDlCxg92wSPiiAKwfCjJBOEOYXq1xO91OpjQLOkyogCxSLy0jzQ2BYnt4qmBnapjamzYzVjCr4CWg==} hasBin: true + '@git.zone/tsdocker@2.2.4': + resolution: {integrity: sha512-B5N8I159R0X9NOrYWx3kLQPuIW71uXKzb+RCS4h9N5FSlCOWVPDUU4yuv0dl24lWHsQmSgcnSqPRAUxhSCqZng==} + hasBin: true + '@git.zone/tspublish@1.11.5': resolution: {integrity: sha512-3tCGhVbH6S/17n3A6Tc6H+ncRdxxbTT0ABcj8S1wRLA8YuBSj9bY7k6uj/iFRy/B/OepB94m1goCiaWESdcZYg==} hasBin: true @@ -1041,6 +1048,9 @@ packages: '@push.rocks/smartlog-interfaces@3.0.2': resolution: {integrity: sha512-8hGRTJehbsFSJxLhCQkA018mZtXVPxPTblbg9VaE/EqISRzUw+eosJ2EJV7M4Qu0eiTJZjnWnNLn8CkD77ziWw==} + '@push.rocks/smartlog-source-ora@1.0.9': + resolution: {integrity: sha512-s5OmwceGUFbCysYNg3VJZo07lkHxD2GPk8VABJTmhxtrogBw5kChx9d5NMdWQ+CovkNoNhKen1hF3b3l0v6jSQ==} + '@push.rocks/smartlog@3.2.2': resolution: {integrity: sha512-3Nw/Ki/jZ4vrrWnEtpcGPF28jQ+fr9/9Edc7ytaEA6ZWIpojtwacJ5qihMvHbIei+zjpD35w6tZP2mQjvw5VRQ==} @@ -1517,8 +1527,8 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@serve.zone/interfaces@5.4.4': - resolution: {integrity: sha512-0mcLvZBGHOFKG8PkpMieHo19lbPLJIpDIgKUSbuqfqOzSYymS8BLYftCr8Kw7ddl61kICZoy/m09U+TtxZbxBg==} + '@serve.zone/interfaces@5.4.6': + resolution: {integrity: sha512-o4k7Wr6t3NLiP6gfAZZz8Jx8RlQ4sZYHTbhr4WkXzGf78vczFRIuFLyY1Y+TTNzDLEIzLVIyMsuECMV1KTwB2Q==} '@sindresorhus/is@5.6.0': resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} @@ -1986,6 +1996,10 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -2189,6 +2203,14 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -2226,6 +2248,14 @@ packages: resolution: {integrity: sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=} engines: {node: '>=4'} + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -2234,10 +2264,20 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone@1.0.4: + resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2370,6 +2410,9 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -2495,6 +2538,10 @@ packages: escape-html@1.0.3: resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} + escape-string-regexp@1.0.5: + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2760,6 +2807,14 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + has-flag@3.0.0: + resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -2883,6 +2938,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -3045,6 +3104,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@3.0.0: + resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} + engines: {node: '>=8'} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -3262,6 +3325,10 @@ packages: engines: {node: '>=16'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -3384,6 +3451,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -3456,10 +3526,18 @@ packages: once@1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + ora@4.1.1: + resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} + engines: {node: '>=8'} + os-tmpdir@1.0.2: resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} engines: {node: '>=0.10.0'} @@ -3786,6 +3864,10 @@ packages: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -3989,6 +4071,14 @@ packages: resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} engines: {node: '>=16'} + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + sweet-scroll@4.0.0: resolution: {integrity: sha512-mR6fRsAQANtm3zpzhUE73KAOt2aT4ZsWzNSggiEsSqdO6Zh4gM7ioJG81EngrZEl0XAc3ZvzEfhxggOoEBc8jA==} @@ -4210,6 +4300,9 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + wcwidth@1.0.1: + resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} + webdriver-bidi-protocol@0.4.1: resolution: {integrity: sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==} @@ -5157,6 +5250,19 @@ snapshots: - '@swc/helpers' - supports-color + '@git.zone/tsdocker@2.2.4': + dependencies: + '@push.rocks/lik': 6.4.0 + '@push.rocks/projectinfo': 5.1.0 + '@push.rocks/smartcli': 4.0.20 + '@push.rocks/smartconfig': 6.1.0 + '@push.rocks/smartfs': 1.5.0 + '@push.rocks/smartinteract': 2.0.16 + '@push.rocks/smartlog': 3.2.2 + '@push.rocks/smartlog-destination-local': 9.0.2 + '@push.rocks/smartlog-source-ora': 1.0.9 + '@push.rocks/smartshell': 3.3.8 + '@git.zone/tspublish@1.11.5': dependencies: '@push.rocks/consolecolor': 2.0.3 @@ -6211,6 +6317,11 @@ snapshots: '@api.global/typedrequest-interfaces': 2.0.2 '@tsclass/tsclass': 4.2.0 + '@push.rocks/smartlog-source-ora@1.0.9': + dependencies: + '@pushrocks/smartlog-interfaces': 2.0.23 + ora: 4.1.1 + '@push.rocks/smartlog@3.2.2': dependencies: '@api.global/typedrequest-interfaces': 3.0.19 @@ -6997,7 +7108,7 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@serve.zone/interfaces@5.4.4': + '@serve.zone/interfaces@5.4.6': dependencies: '@api.global/typedrequest-interfaces': 3.0.19 '@push.rocks/smartlog-interfaces': 3.0.2 @@ -7611,6 +7722,10 @@ snapshots: ansi-regex@6.0.1: {} + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -7815,6 +7930,17 @@ snapshots: ccount@2.0.1: {} + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -7855,6 +7981,12 @@ snapshots: clean-stack@1.3.0: {} + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + cli-width@4.1.0: {} cliui@8.0.1: @@ -7863,10 +7995,18 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone@1.0.4: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} combined-stream@1.0.8: @@ -7962,6 +8102,10 @@ snapshots: deep-extend@0.6.0: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 + defer-to-connect@2.0.1: {} define-data-property@1.1.4: @@ -8128,6 +8272,8 @@ snapshots: escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} + escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -8473,6 +8619,10 @@ snapshots: graceful-fs@4.2.11: {} + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -8620,6 +8770,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-interactive@1.0.0: {} + is-nan@1.3.2: dependencies: call-bind: 1.0.7 @@ -8807,6 +8959,10 @@ snapshots: lodash@4.17.21: {} + log-symbols@3.0.0: + dependencies: + chalk: 2.4.2 + longest-streak@3.1.0: {} lower-case@1.1.4: {} @@ -9191,6 +9347,8 @@ snapshots: mime@4.0.6: {} + mimic-fn@2.1.0: {} + mimic-response@3.1.0: {} mimic-response@4.0.0: {} @@ -9289,6 +9447,8 @@ snapshots: ms@2.1.3: {} + mute-stream@0.0.8: {} + mute-stream@1.0.0: {} nanoid@2.1.11: {} @@ -9339,12 +9499,27 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + ora@4.1.1: + dependencies: + chalk: 3.0.0 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + log-symbols: 3.0.0 + mute-stream: 0.0.8 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + os-tmpdir@1.0.2: {} p-cancelable@3.0.0: {} @@ -9704,6 +9879,11 @@ snapshots: dependencies: lowercase-keys: 3.0.0 + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -10008,6 +10188,14 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 5.3.1 + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + sweet-scroll@4.0.0: {} symbol-tree@3.2.4: {} @@ -10232,6 +10420,10 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + webdriver-bidi-protocol@0.4.1: {} webidl-conversions@4.0.2: {} diff --git a/test/test_latest.sh b/test/test_latest.sh new file mode 100644 index 0000000..0817ebd --- /dev/null +++ b/test/test_latest.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -euo pipefail + +node --input-type=module <<'NODE' +import fs from 'node:fs'; + +const readJson = (path) => JSON.parse(fs.readFileSync(path, 'utf8')); + +const checks = { + packageVersion: readJson('/app/package.json').version, + interfacesVersion: readJson('/app/node_modules/@serve.zone/interfaces/package.json').version, + hasCli: fs.existsSync('/app/cli.js'), +}; + +await import('/app/dist_ts/index.js'); + +if (checks.packageVersion !== '1.0.186') { + throw new Error(`Unexpected Coretraffic package version ${checks.packageVersion}`); +} +if (checks.interfacesVersion !== '5.4.6') { + throw new Error(`Unexpected interfaces version ${checks.interfacesVersion}`); +} +if (!checks.hasCli) { + throw new Error('Missing cli.js'); +} + +console.log(JSON.stringify(checks)); +NODE