@goldstack/template-dynamodb 0.2.14 → 0.2.15

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.
@@ -1,10 +1,13 @@
1
1
  import { EmbeddedPackageConfig } from '@goldstack/utils-package-config-embedded';
2
2
  import { DynamoDB } from 'aws-sdk';
3
- import { StartedTestContainer } from 'testcontainers';
4
3
  import { DynamoDBDeployment, DynamoDBPackage } from './templateDynamoDB';
4
+ export interface DynamoDBInstance {
5
+ port: number;
6
+ stop: () => Promise<void>;
7
+ }
5
8
  export declare const localConnect: (packageConfig: EmbeddedPackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName?: string) => Promise<DynamoDB>;
6
- export declare const endpointUrl: (startedContainer: StartedTestContainer) => string;
7
- export declare const createClient: (startedContainer: StartedTestContainer) => DynamoDB;
8
- export declare const startContainer: () => Promise<StartedTestContainer>;
9
+ export declare const endpointUrl: (startedContainer: DynamoDBInstance) => string;
10
+ export declare const createClient: (startedContainer: DynamoDBInstance) => DynamoDB;
11
+ export declare const startContainer: () => Promise<DynamoDBInstance>;
9
12
  export declare const stopLocalDynamoDB: (packageConfig: EmbeddedPackageConfig<DynamoDBPackage, DynamoDBDeployment>, deploymentName?: string) => Promise<void>;
10
13
  //# sourceMappingURL=localDynamoDB.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localDynamoDB.d.ts","sourceRoot":"","sources":["../../src/localDynamoDB.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAoB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAYzE,eAAO,MAAM,YAAY,kBACR,sBAAsB,eAAe,EAAE,kBAAkB,CAAC,mBACxD,MAAM,KACtB,QAAQ,QAAQ,CAmBlB,CAAC;AAEF,eAAO,MAAM,WAAW,qBAAsB,oBAAoB,KAAG,MAIpE,CAAC;AAEF,eAAO,MAAM,YAAY,qBACL,oBAAoB,KACrC,QAUF,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,QAAQ,oBAAoB,CAO7D,CAAC;AAEF,eAAO,MAAM,iBAAiB,kBACb,sBAAsB,eAAe,EAAE,kBAAkB,CAAC,mBACxD,MAAM,KACtB,QAAQ,IAAI,CAad,CAAC"}
1
+ {"version":3,"file":"localDynamoDB.d.ts","sourceRoot":"","sources":["../../src/localDynamoDB.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AASzE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAKD,eAAO,MAAM,YAAY,kBACR,sBAAsB,eAAe,EAAE,kBAAkB,CAAC,mBACxD,MAAM,KACtB,QAAQ,QAAQ,CAmBlB,CAAC;AAEF,eAAO,MAAM,WAAW,qBAAsB,gBAAgB,KAAG,MAEhE,CAAC;AAEF,eAAO,MAAM,YAAY,qBAAsB,gBAAgB,KAAG,QAUjE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAa,QAAQ,gBAAgB,CA4C/D,CAAC;AAEF,eAAO,MAAM,iBAAiB,kBACb,sBAAsB,eAAe,EAAE,kBAAkB,CAAC,mBACxD,MAAM,KACtB,QAAQ,IAAI,CAad,CAAC"}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.stopLocalDynamoDB = exports.startContainer = exports.createClient = exports.endpointUrl = exports.localConnect = void 0;
4
7
  const aws_sdk_1 = require("aws-sdk");
5
- const testcontainers_1 = require("testcontainers");
8
+ const dynamo_db_local_1 = __importDefault(require("dynamo-db-local"));
9
+ const utils_sh_1 = require("@goldstack/utils-sh");
6
10
  const dynamoDBPackageUtils_1 = require("./dynamoDBPackageUtils");
11
+ const tcp_port_used_1 = require("tcp-port-used");
7
12
  const MAPPED_PORT = 8000;
8
- const IMAGE_NAME = 'amazon/dynamodb-local:1.18.0';
9
13
  const startedContainers = new Map();
10
14
  const localConnect = async (packageConfig, deploymentName) => {
11
15
  const tableName = await (0, dynamoDBPackageUtils_1.getTableName)(packageConfig, deploymentName);
@@ -26,7 +30,7 @@ const localConnect = async (packageConfig, deploymentName) => {
26
30
  };
27
31
  exports.localConnect = localConnect;
28
32
  const endpointUrl = (startedContainer) => {
29
- return `http://${startedContainer.getHost()}:${startedContainer.getMappedPort(MAPPED_PORT)}`;
33
+ return `http://localhost:${startedContainer.port}`;
30
34
  };
31
35
  exports.endpointUrl = endpointUrl;
32
36
  const createClient = (startedContainer) => {
@@ -41,13 +45,42 @@ const createClient = (startedContainer) => {
41
45
  });
42
46
  };
43
47
  exports.createClient = createClient;
44
- const startContainer = () => {
45
- const startedContainer = new testcontainers_1.GenericContainer(IMAGE_NAME)
46
- .withExposedPorts(MAPPED_PORT)
47
- .withCommand(['-jar', 'DynamoDBLocal.jar', '-inMemory'])
48
- .withReuse()
49
- .start();
50
- return startedContainer;
48
+ const startContainer = async () => {
49
+ if (await (0, tcp_port_used_1.check)(MAPPED_PORT)) {
50
+ console.debug(`Port ${MAPPED_PORT} is already in use. Assuming another instance of DynamoDB is already running.`);
51
+ return {
52
+ port: MAPPED_PORT,
53
+ stop: async () => {
54
+ // no op, someone else controls this instance
55
+ },
56
+ };
57
+ }
58
+ if ((0, utils_sh_1.commandExists)('java')) {
59
+ console.debug('Starting local DynamoDB with Java');
60
+ const pr = dynamo_db_local_1.default.spawn({ port: MAPPED_PORT, path: null });
61
+ return {
62
+ port: MAPPED_PORT,
63
+ stop: async () => {
64
+ pr.kill();
65
+ },
66
+ };
67
+ }
68
+ if ((0, utils_sh_1.commandExists)('docker')) {
69
+ console.debug('Starting local DynamoDB with Docker');
70
+ console.warn("Docker doesn't currently support stopping the container, see https://github.com/chrisguttandin/dynamo-db-local/issues/114\nIt is recommended you install Java.");
71
+ const pr = dynamo_db_local_1.default.spawn({
72
+ port: MAPPED_PORT,
73
+ command: 'docker',
74
+ path: null,
75
+ });
76
+ return {
77
+ port: MAPPED_PORT,
78
+ stop: async () => {
79
+ pr.kill();
80
+ },
81
+ };
82
+ }
83
+ throw new Error('Either Docker or Java needs to be installed to run local DynamoDB');
51
84
  };
52
85
  exports.startContainer = startContainer;
53
86
  const stopLocalDynamoDB = async (packageConfig, deploymentName) => {
@@ -1 +1 @@
1
- {"version":3,"file":"localDynamoDB.js","sourceRoot":"","sources":["../../src/localDynamoDB.ts"],"names":[],"mappings":";;;AAEA,qCAAmC;AACnC,mDAAwE;AAExE,iEAAsD;AAGtD,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAIlD,MAAM,iBAAiB,GAGnB,IAAI,GAAG,EAAE,CAAC;AAEP,MAAM,YAAY,GAAG,KAAK,EAC/B,aAAyE,EACzE,cAAuB,EACJ,EAAE;IACrB,MAAM,SAAS,GAAG,MAAM,IAAA,mCAAY,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAEpE,oIAAoI;IACpI,IAAI,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,SAAS,EAAE;QACtD,OAAO,IAAA,oBAAY,EAAC,gBAAgB,CAAC,CAAC;KACvC;IACD,gBAAgB,GAAG,MAAM,IAAA,sBAAc,GAAE,CAAC;IAE1C,sFAAsF;IACtF,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9D,IAAI,oBAAoB,IAAI,oBAAoB,KAAK,SAAS,EAAE;QAC9D,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAA,oBAAY,EAAC,oBAAoB,CAAC,CAAC;KAC3C;IAED,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACnD,OAAO,IAAA,oBAAY,EAAC,gBAAgB,CAAC,CAAC;AACxC,CAAC,CAAC;AAtBW,QAAA,YAAY,gBAsBvB;AAEK,MAAM,WAAW,GAAG,CAAC,gBAAsC,EAAU,EAAE;IAC5E,OAAO,UAAU,gBAAgB,CAAC,OAAO,EAAE,IAAI,gBAAgB,CAAC,aAAa,CAC3E,WAAW,CACZ,EAAE,CAAC;AACN,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEK,MAAM,YAAY,GAAG,CAC1B,gBAAsC,EAC5B,EAAE;IACZ,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,gBAAgB,CAAC,CAAC;IAC/C,OAAO,IAAI,kBAAQ,CAAC;QAClB,QAAQ;QACR,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE;YACX,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,OAAO;SACzB;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAZW,QAAA,YAAY,gBAYvB;AAEK,MAAM,cAAc,GAAG,GAAkC,EAAE;IAChE,MAAM,gBAAgB,GAAG,IAAI,iCAAgB,CAAC,UAAU,CAAC;SACtD,gBAAgB,CAAC,WAAW,CAAC;SAC7B,WAAW,CAAC,CAAC,MAAM,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;SACvD,SAAS,EAAE;SACX,KAAK,EAAE,CAAC;IACX,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB;AAEK,MAAM,iBAAiB,GAAG,KAAK,EACpC,aAAyE,EACzE,cAAuB,EACR,EAAE;IACjB,MAAM,SAAS,GAAG,MAAM,IAAA,mCAAY,EAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,6EAA6E,SAAS,EAAE,CACzF,CAAC;KACH;IACD,IAAI,gBAAgB,KAAK,SAAS,EAAE;QAClC,OAAO;KACR;IACD,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAhBW,QAAA,iBAAiB,qBAgB5B"}
1
+ {"version":3,"file":"localDynamoDB.js","sourceRoot":"","sources":["../../src/localDynamoDB.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goldstack/template-dynamodb",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "Utilities for building modules for DynamoDB access.",
5
5
  "keywords": [
6
6
  "goldstack",
@@ -45,9 +45,11 @@
45
45
  "@goldstack/utils-esbuild": "0.5.6",
46
46
  "@goldstack/utils-package": "0.4.6",
47
47
  "@goldstack/utils-package-config-embedded": "0.5.7",
48
+ "@goldstack/utils-sh": "0.5.6",
48
49
  "@goldstack/utils-terraform": "0.4.9",
49
50
  "aws-sdk": "^2.1222.0",
50
- "testcontainers": "^9.2.1",
51
+ "dynamo-db-local": "^5.0.0",
52
+ "tcp-port-used": "^1.0.2",
51
53
  "umzug": "^3.1.1"
52
54
  },
53
55
  "devDependencies": {
@@ -56,6 +58,7 @@
56
58
  "@goldstack/utils-package-config-generate": "0.3.6",
57
59
  "@types/jest": "^29.0.1",
58
60
  "@types/node": "^18.7.13",
61
+ "@types/tcp-port-used": "^1",
59
62
  "@types/yargs": "^17.0.10",
60
63
  "jest": "^29.3.1",
61
64
  "rimraf": "^3.0.2",