@sasjs/api 0.11.0 → 0.13.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/build/browser.js +284 -17
- package/build/cjs/corpus/deploy.js +139 -0
- package/build/cjs/corpus/runner.js +2 -0
- package/build/cjs/corpus/session.js +69 -0
- package/build/cjs/drive/registry.js +38 -0
- package/build/cjs/host/dispatch.js +15 -0
- package/build/cjs/index.js +3 -1
- package/build/cjs/routes/generated.js +32 -0
- package/build/cjs/routes/overlay.js +2 -10
- package/build/esm/corpus/deploy.d.ts +16 -0
- package/build/esm/corpus/deploy.d.ts.map +1 -0
- package/build/esm/corpus/deploy.js +136 -0
- package/build/esm/corpus/runner.d.ts.map +1 -1
- package/build/esm/corpus/runner.js +2 -0
- package/build/esm/corpus/session.d.ts +9 -8
- package/build/esm/corpus/session.d.ts.map +1 -1
- package/build/esm/corpus/session.js +69 -0
- package/build/esm/drive/registry.d.ts +52 -0
- package/build/esm/drive/registry.d.ts.map +1 -0
- package/build/esm/drive/registry.js +33 -0
- package/build/esm/host/dispatch.d.ts +6 -0
- package/build/esm/host/dispatch.d.ts.map +1 -1
- package/build/esm/host/dispatch.js +15 -0
- package/build/esm/index.d.ts +1 -0
- package/build/esm/index.d.ts.map +1 -1
- package/build/esm/index.js +1 -0
- package/build/esm/routes/generated.d.ts.map +1 -1
- package/build/esm/routes/generated.js +32 -0
- package/build/esm/routes/overlay.d.ts.map +1 -1
- package/build/esm/routes/overlay.js +2 -10
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/drive/registry.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,iBAAiB,EAC3B,MAAM,aAAa,GAAG,SAAS,KAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAU/B,CAAA;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAEzB,OAAO,GAAE,MAAM,EAAsB;IAI3C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAGlD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ApiError } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* `DELETE /SASjsApi/drive/deploy`.
|
|
4
|
+
*
|
|
5
|
+
* The document requires both body values, so both are checked - a caller that
|
|
6
|
+
* names a stream but not the folder has not said what to remove. Only the folder
|
|
7
|
+
* reaches the registry, because that is what identifies the app.
|
|
8
|
+
*
|
|
9
|
+
* The checks are here rather than in the transport because this is the one
|
|
10
|
+
* implementation of the operation: a host calling it directly gets the same
|
|
11
|
+
* refusals in the same order, and with the same messages the document states.
|
|
12
|
+
*/
|
|
13
|
+
export const unpublishAppStream = async (registry, body) => {
|
|
14
|
+
if (!body?.streamServiceName)
|
|
15
|
+
throw new ApiError(400, '"streamServiceName" is required');
|
|
16
|
+
if (!body.appLoc)
|
|
17
|
+
throw new ApiError(400, '"appLoc" is required');
|
|
18
|
+
if (!(await registry.unpublish(body.appLoc)))
|
|
19
|
+
throw new ApiError(404, 'No such app stream entry.');
|
|
20
|
+
return { status: 'success' };
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* The registry the corpus and the package's own tests read: one published app,
|
|
24
|
+
* identified by its folder alone.
|
|
25
|
+
*/
|
|
26
|
+
export class MemoryAppStreamRegistry {
|
|
27
|
+
constructor(folders = ['/Public/myApp']) {
|
|
28
|
+
this.folders = new Set(folders);
|
|
29
|
+
}
|
|
30
|
+
async unpublish(appLoc) {
|
|
31
|
+
return this.folders.delete(appLoc);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -2,6 +2,7 @@ import type { DriveService } from '../drive/service.js';
|
|
|
2
2
|
import type { IdentityService } from '../identity/service.js';
|
|
3
3
|
import type { RecordService } from '../identity/records.js';
|
|
4
4
|
import type { SessionService } from '../session/service.js';
|
|
5
|
+
import type { AppStreamRegistry } from '../drive/registry.js';
|
|
5
6
|
import type { CodeService } from '../code/service.js';
|
|
6
7
|
import type { Subject } from '../identity/types.js';
|
|
7
8
|
export interface ApiRequest {
|
|
@@ -51,6 +52,11 @@ export interface Services {
|
|
|
51
52
|
* answers 501 for these four, naming the capability.
|
|
52
53
|
*/
|
|
53
54
|
session?: SessionService;
|
|
55
|
+
/**
|
|
56
|
+
* The app streams a host has published. Absent, `DELETE /drive/deploy`
|
|
57
|
+
* answers 501 - the package cannot know a host's stream registry.
|
|
58
|
+
*/
|
|
59
|
+
registry?: AppStreamRegistry;
|
|
54
60
|
}
|
|
55
61
|
export declare const dispatch: (services: Services, routeId: string, request?: ApiRequest) => Promise<ApiResponse>;
|
|
56
62
|
/** Whether a route is one `dispatch` can answer today. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/host/dispatch.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAOnD,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,oFAAoF;IACpF,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;IACtD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,YAAY,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,yFAAyF;IACzF,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/host/dispatch.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAOnD,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,oFAAoF;IACpF,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;IACtD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,YAAY,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,yFAAyF;IACzF,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AA2CD,eAAO,MAAM,QAAQ,GACnB,UAAU,QAAQ,EAClB,SAAS,MAAM,EACf,UAAS,UAAe,KACvB,OAAO,CAAC,WAAW,CA8crB,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,cAAc,EAAE,MAAM,EAkDlC,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { routeById } from '../routes/index.js';
|
|
2
|
+
import { unpublishAppStream } from '../drive/registry.js';
|
|
2
3
|
import { ApiError } from '../types.js';
|
|
3
4
|
import { DEPLOY_SUCCESS } from '../drive/deploy.js';
|
|
4
5
|
/** The defaults sasjs/server's Client schema applies to an omitted lifetime. */
|
|
@@ -166,12 +167,24 @@ export const dispatch = async (services, routeId, request = {}) => {
|
|
|
166
167
|
status: 200,
|
|
167
168
|
body: await drive.rename(String(request.body?.oldPath || ''), String(request.body?.newPath || ''))
|
|
168
169
|
};
|
|
170
|
+
// The archive is the host's transport - multer and a zip library on a
|
|
171
|
+
// server, `DecompressionStream` in a worker - and it hands this the same tree
|
|
172
|
+
// `POST /deploy` takes. The deploy cap is measured on that tree, after
|
|
173
|
+
// expansion, which is why the two share this path rather than reading bytes.
|
|
174
|
+
case 'POST /SASjsApi/drive/deploy/upload':
|
|
169
175
|
case 'POST /SASjsApi/drive/deploy': {
|
|
170
176
|
// `streamWebFolder` is the host's: publishing an app stream is not a drive
|
|
171
177
|
// operation, and a host that has no app stream ignores it.
|
|
172
178
|
await drive.deploy(String(body.appLoc ?? ''), body.fileTree);
|
|
173
179
|
return { status: 200, body: DEPLOY_SUCCESS };
|
|
174
180
|
}
|
|
181
|
+
case 'DELETE /SASjsApi/drive/deploy':
|
|
182
|
+
if (!services.registry)
|
|
183
|
+
throw new ApiError(501, `This host has no app stream registry, so it cannot answer ${routeId}.`);
|
|
184
|
+
return {
|
|
185
|
+
status: 200,
|
|
186
|
+
body: await unpublishAppStream(services.registry, body)
|
|
187
|
+
};
|
|
175
188
|
case 'GET /SASjsApi/drive/filetree':
|
|
176
189
|
return { status: 200, body: await drive.tree(query._folderPath) };
|
|
177
190
|
// ------------------------------------------------------------- sessions
|
|
@@ -384,6 +397,8 @@ export const dispatch = async (services, routeId, request = {}) => {
|
|
|
384
397
|
};
|
|
385
398
|
/** Whether a route is one `dispatch` can answer today. */
|
|
386
399
|
export const HANDLED_ROUTES = [
|
|
400
|
+
'POST /SASjsApi/drive/deploy/upload',
|
|
401
|
+
'DELETE /SASjsApi/drive/deploy',
|
|
387
402
|
'GET /SASjsApi/session/{sessionId}',
|
|
388
403
|
'GET /SASjsApi/session/{sessionId}/log',
|
|
389
404
|
'GET /SASjsApi/session/{sessionId}/output',
|
package/build/esm/index.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export type { IdentityFixture, IdentityFixtureClient, IdentityFixtureCode, Ident
|
|
|
38
38
|
export type { IdentityClient, IdentityClientRecord, IdentityGroupRecord, IdentityPermissionRecord, IdentityStore, IdentityUser, IdentityUserRecord, NewGroup, NewPermission, NewUser, Subject, TokenPair, UserChange } from './identity/types.js';
|
|
39
39
|
export { DRIVE_CORPUS } from './corpus/drive.js';
|
|
40
40
|
export { IDENTITY_CORPUS } from './corpus/identity.js';
|
|
41
|
+
export { DEPLOY_CORPUS } from './corpus/deploy.js';
|
|
41
42
|
export { SESSION_CORPUS } from './corpus/session.js';
|
|
42
43
|
export { RECORD_CORPUS, ADMIN_SIGNED_IN, PROVIDER_MANAGED } from './corpus/records.js';
|
|
43
44
|
export type { CorpusCase } from './corpus/drive.js';
|
package/build/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,OAAO,EACP,QAAQ,EACR,MAAM,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAG7D,cAAc,2BAA2B,CAAA;AACzC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACX,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACzD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,OAAO,EACP,QAAQ,EACR,MAAM,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAG7D,cAAc,2BAA2B,CAAA;AACzC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACX,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACzD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA"}
|
package/build/esm/index.js
CHANGED
|
@@ -30,6 +30,7 @@ export { MemoryIdentityStore } from './identity/memory-store.js';
|
|
|
30
30
|
export { DEFAULT_IDENTITY, IDENTITY_FORMAT, parseIdentity } from './identity/fixture.js';
|
|
31
31
|
export { DRIVE_CORPUS } from './corpus/drive.js';
|
|
32
32
|
export { IDENTITY_CORPUS } from './corpus/identity.js';
|
|
33
|
+
export { DEPLOY_CORPUS } from './corpus/deploy.js';
|
|
33
34
|
export { SESSION_CORPUS } from './corpus/session.js';
|
|
34
35
|
export { RECORD_CORPUS, ADMIN_SIGNED_IN, PROVIDER_MANAGED } from './corpus/records.js';
|
|
35
36
|
export { runCase, servicesFor } from './corpus/runner.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../../src/routes/generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,gBAAgB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../../src/routes/generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAw6D5C,CAAA"}
|
|
@@ -1298,6 +1298,14 @@ export const GENERATED_ROUTES = [
|
|
|
1298
1298
|
{
|
|
1299
1299
|
status: 200,
|
|
1300
1300
|
description: 'Ok'
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
status: 401,
|
|
1304
|
+
description: 'No valid access token or session was supplied'
|
|
1305
|
+
},
|
|
1306
|
+
{
|
|
1307
|
+
status: 404,
|
|
1308
|
+
description: 'Session with the given ID was not found.'
|
|
1301
1309
|
}
|
|
1302
1310
|
]
|
|
1303
1311
|
},
|
|
@@ -1320,6 +1328,14 @@ export const GENERATED_ROUTES = [
|
|
|
1320
1328
|
{
|
|
1321
1329
|
status: 200,
|
|
1322
1330
|
description: 'Ok'
|
|
1331
|
+
},
|
|
1332
|
+
{
|
|
1333
|
+
status: 401,
|
|
1334
|
+
description: 'No valid access token or session was supplied'
|
|
1335
|
+
},
|
|
1336
|
+
{
|
|
1337
|
+
status: 404,
|
|
1338
|
+
description: 'Session with the given ID was not found.'
|
|
1323
1339
|
}
|
|
1324
1340
|
]
|
|
1325
1341
|
},
|
|
@@ -1342,6 +1358,14 @@ export const GENERATED_ROUTES = [
|
|
|
1342
1358
|
{
|
|
1343
1359
|
status: 200,
|
|
1344
1360
|
description: 'Ok'
|
|
1361
|
+
},
|
|
1362
|
+
{
|
|
1363
|
+
status: 401,
|
|
1364
|
+
description: 'No valid access token or session was supplied'
|
|
1365
|
+
},
|
|
1366
|
+
{
|
|
1367
|
+
status: 404,
|
|
1368
|
+
description: 'Session with the given ID was not found.'
|
|
1345
1369
|
}
|
|
1346
1370
|
]
|
|
1347
1371
|
},
|
|
@@ -1364,6 +1388,14 @@ export const GENERATED_ROUTES = [
|
|
|
1364
1388
|
{
|
|
1365
1389
|
status: 200,
|
|
1366
1390
|
description: 'Ok'
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
status: 401,
|
|
1394
|
+
description: 'No valid access token or session was supplied'
|
|
1395
|
+
},
|
|
1396
|
+
{
|
|
1397
|
+
status: 404,
|
|
1398
|
+
description: 'Session with the given ID was not found.'
|
|
1367
1399
|
}
|
|
1368
1400
|
]
|
|
1369
1401
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/routes/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGzD,yDAAyD;AACzD,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GACtC,CAAC;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAElE,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAczD,CAAA;
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/routes/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGzD,yDAAyD;AACzD,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GACtC,CAAC;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAElE,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAczD,CAAA;AAkCD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA0MhD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,OAAO,EAAE,UAAU,EAA8C,CAAA"}
|
|
@@ -27,8 +27,6 @@ const RUNTIME = 'Starting a program needs a runtime port, which this package doe
|
|
|
27
27
|
const HOST_CONFIG = "The body is the host's own configuration - ports, run times and providers - which a mock states for itself and this package cannot know.";
|
|
28
28
|
const HOST_OWNED = "The host owns this report: it describes the host's own process and files, which a browser build has no equivalent of.";
|
|
29
29
|
const WEB_BUNDLE = 'The host serves its own web bundle; there is no API decision here for this package to answer.';
|
|
30
|
-
const ARCHIVE = "Expanding the uploaded archive is the host's transport work - multer and a zip library on the server, `DecompressionStream` in a worker - and the host hands this package the tree it produces, which is the same tree `POST /SASjsApi/drive/deploy` takes.";
|
|
31
|
-
const UNPUBLISH = 'Unpublishing inverts the deploy route, so the two land together.';
|
|
32
30
|
const success = { status: 'success' };
|
|
33
31
|
const user = {
|
|
34
32
|
uid: '',
|
|
@@ -156,16 +154,10 @@ export const OVERLAY = {
|
|
|
156
154
|
500: { status: 'failure', message: 'Deployment failed!' }
|
|
157
155
|
}
|
|
158
156
|
},
|
|
159
|
-
'POST /SASjsApi/drive/deploy/upload': {
|
|
160
|
-
implemented: false,
|
|
161
|
-
reason: ARCHIVE
|
|
162
|
-
},
|
|
157
|
+
'POST /SASjsApi/drive/deploy/upload': { implemented: true },
|
|
163
158
|
// `404` is a pair - the registry name and the appLoc it was published from -
|
|
164
159
|
// that matches no entry, and the drive's content is deliberately left alone.
|
|
165
|
-
'DELETE /SASjsApi/drive/deploy': {
|
|
166
|
-
implemented: false,
|
|
167
|
-
reason: UNPUBLISH
|
|
168
|
-
},
|
|
160
|
+
'DELETE /SASjsApi/drive/deploy': { implemented: true },
|
|
169
161
|
// Group - members and the groups themselves
|
|
170
162
|
'GET /SASjsApi/group': { implemented: true },
|
|
171
163
|
'GET /SASjsApi/group/{uid}': { implemented: true },
|
package/package.json
CHANGED